Gestion des pannes et des interventions techniques dans une boulangerie artisanale
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

59 líneas
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']