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.
 
 

114 Zeilen
3.9 KiB

  1. from django.db import models
  2. from django.utils.translation import gettext_lazy as _
  3. from django.template.defaultfilters import date as _date
  4. from django.urls import reverse
  5. class Fournisseur(models.Model):
  6. nom_fournisseur = models.CharField('nom', max_length=50)
  7. class Meta:
  8. verbose_name = _("fournisseur")
  9. verbose_name_plural = _("fournisseurs")
  10. def __str__(self):
  11. return self.nom_fournisseur
  12. def get_absolute_url(self):
  13. return reverse("fournisseur_detail", kwargs={"pk": self.pk})
  14. class Technicien(models.Model):
  15. nom_technicien = models.CharField('nom', max_length=50)
  16. ref_fournisseur = models.ForeignKey("maintenance.Fournisseur",
  17. verbose_name=_("fournisseur"),
  18. on_delete=models.PROTECT)
  19. class Meta:
  20. verbose_name = _("technicien")
  21. verbose_name_plural = _("techniciens")
  22. def __str__(self):
  23. return self.nom_technicien
  24. def get_absolute_url(self):
  25. return reverse("technicien_detail", kwargs={"pk": self.pk})
  26. class Machine(models.Model):
  27. numero_serie = models.CharField('numéro de série', max_length=20)
  28. nom_machine = models.CharField('nom', max_length=50)
  29. ref_fournisseur = models.ForeignKey("maintenance.Fournisseur",
  30. verbose_name=_("fournisseur"),
  31. on_delete=models.PROTECT)
  32. class Meta:
  33. verbose_name = _("machine")
  34. verbose_name_plural = _("machines")
  35. def __str__(self):
  36. return self.nom_machine
  37. def get_absolute_url(self):
  38. return reverse("machine_detail", kwargs={"pk": self.pk})
  39. class Panne(models.Model):
  40. moment_panne = models.DateTimeField('moment de la panne',
  41. auto_now_add=True)
  42. description_panne = models.TextField('description', default='-')
  43. ref_machine = models.ForeignKey("maintenance.Machine",
  44. verbose_name=_("machine"),
  45. on_delete=models.PROTECT)
  46. class Meta:
  47. verbose_name = _("Panne")
  48. verbose_name_plural = _("Pannes")
  49. def __str__(self):
  50. if len(self.description_panne) <= 20:
  51. short_description = self.description_panne
  52. else:
  53. short_description = self.description_panne[:20]
  54. return _date(self.moment_panne,
  55. 'SHORT_DATETIME_FORMAT') + " | " + short_description
  56. def get_absolute_url(self):
  57. return reverse("panne_detail", kwargs={"pk": self.pk})
  58. class Intervention(models.Model):
  59. moment_intervention = models.DateTimeField('moment de l\'intervention',
  60. auto_now_add=True)
  61. ref_panne = models.ForeignKey("maintenance.Panne",
  62. verbose_name=_("panne"),
  63. on_delete=models.PROTECT)
  64. ref_technicien = models.ForeignKey("maintenance.Technicien",
  65. verbose_name=_("technicien"),
  66. on_delete=models.PROTECT,
  67. null=True,
  68. blank=True)
  69. description_intervention = models.TextField('description',
  70. blank=True,
  71. null=True)
  72. class Meta:
  73. verbose_name = _("intervention")
  74. verbose_name_plural = _("interventions")
  75. def __str__(self):
  76. if len(self.description_intervention) <= 20:
  77. short_description = self.description_intervention
  78. else:
  79. short_description = self.description_intervention[:20]
  80. return _date(self.moment_intervention,
  81. 'SHORT_DATETIME_FORMAT') + " | " + short_description
  82. def get_absolute_url(self):
  83. return reverse("intervention_detail", kwargs={"pk": self.pk})