Gestion des pannes et des interventions techniques dans une boulangerie artisanale
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3 年之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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})