Gestion des pannes et des interventions techniques dans une boulangerie artisanale
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 

59 Zeilen
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']