Gestion des pannes et des interventions techniques dans une boulangerie artisanale
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

59 строки
1.7 KiB

  1. from django.contrib import admin
  2. from django import forms
  3. from .models import Fournisseur, Technicien, Machine, Intervention, Panne
  4. @admin.register(Fournisseur)
  5. class FournisseurAdmin(admin.ModelAdmin):
  6. list_display = ['nom_fournisseur']
  7. @admin.register(Technicien)
  8. class TechnicienAdmin(admin.ModelAdmin):
  9. list_display = ['nom_technicien', 'ref_fournisseur']
  10. class PanneInline(admin.TabularInline):
  11. model = Panne
  12. extra = 1
  13. @admin.register(Machine)
  14. class MachineAdmin(admin.ModelAdmin):
  15. list_display = ['numero_serie', 'nom_machine', 'ref_fournisseur']
  16. inlines = [PanneInline]
  17. class InterventionAdminForm(forms.ModelForm):
  18. class Meta:
  19. model = Intervention
  20. fields = '__all__'
  21. def __init__(self, *args, **kwargs):
  22. super(InterventionAdminForm, self).__init__(*args, **kwargs)
  23. if self.instance:
  24. try:
  25. technicians = Technicien.objects.filter(
  26. ref_fournisseur=self.
  27. instance.
  28. ref_panne.
  29. ref_machine.
  30. ref_fournisseur)
  31. self.fields['ref_technicien'].queryset = technicians
  32. except Panne.DoesNotExist:
  33. self.fields['ref_technicien'].queryset = Technicien. \
  34. objects. \
  35. none()
  36. @admin.register(Intervention)
  37. class InterventionAdmin(admin.ModelAdmin):
  38. form = InterventionAdminForm
  39. list_display = ['moment_intervention', 'description_intervention',
  40. 'ref_panne', 'ref_technicien']
  41. @admin.register(Panne)
  42. class PanneAdmin(admin.ModelAdmin):
  43. list_display = ['moment_panne', 'description_panne', 'ref_machine']