diff options
Diffstat (limited to 'archaeological_files/models.py')
-rw-r--r-- | archaeological_files/models.py | 110 |
1 files changed, 51 insertions, 59 deletions
diff --git a/archaeological_files/models.py b/archaeological_files/models.py index 87abd4083..334e8faa4 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -88,84 +88,72 @@ class Job(GeneralType): class Meta: verbose_name = _("Job") verbose_name_plural = _("Jobs") - ordering = ("label",) + ordering = ("order", "label",) + +class GenericEquipmentServiceType(GeneralType): + order = models.IntegerField(_("Order"), default=10) -class GenericEquipmentType(GeneralType): class Meta: verbose_name = _("Generic equipment type") verbose_name_plural = _("Generic equipment types") - ordering = ("label",) + ordering = ("order", "label",) -class EquipmentType(GeneralType): +class EquipmentServiceType(GeneralType): generic_equipment_type = models.ForeignKey( - GenericEquipmentType, verbose_name=_("Generic type")) - - class Meta: - verbose_name = _("Equipment type") - verbose_name_plural = _("Equipment types") - ordering = ("label",) - - -class EquipmentCost(models.Model): - service_provider = models.CharField(_("Service provider"), max_length=200, - default="-") - equipment_type = models.ForeignKey( - EquipmentType, verbose_name=_("Equipment")) - flat_rate = models.BooleanField(_("Flat rate"), default=False) - daily_cost = models.FloatField(_("Daily cost"), blank=True, null=True) - monday = models.BooleanField(_("Monday"), default=True) - tuesday = models.BooleanField(_("Tuesday"), default=True) - wednesday = models.BooleanField(_("Wednesday"), default=True) - thursday = models.BooleanField(_("Thursday"), default=True) - friday = models.BooleanField(_("Friday"), default=True) + GenericEquipmentServiceType, verbose_name=_("Generic type")) order = models.IntegerField(_("Order"), default=10) - parents = models.ManyToManyField( + parent = models.ForeignKey( "self", blank=True, - verbose_name=_("Parents"), - help_text=_("Auto-add this cost when a parent is added") + null=True, + on_delete=models.CASCADE, + verbose_name=_("Parent"), + help_text=_("Auto-add this cost when a parent is added"), + related_name="children" ) class Meta: - verbose_name = _("Equipment cost") - verbose_name_plural = _("Equipment costs") - - -class TechnicalService(GeneralType): - class Meta: - verbose_name = _("Technical service") - verbose_name_plural = _("Technical services") - ordering = ("label",) + verbose_name = _("Equipment/service type") + verbose_name_plural = _("Equipment/service types") + ordering = ("order", "label",) -TECH_UNITS = ( - ("D", _("Days")), - ("M", _("Linear meter")), +ES_UNITS = ( + ("D", _("days")), + ("W", _("weeks")), + ("M", _("months")), + ("L", _("linear meter")), ) -class TechnicalServiceCost(models.Model): - service_provider = models.CharField(_("Service provider"), max_length=200, - default="-") - technical_service = models.ForeignKey( - TechnicalService, verbose_name=_("Technical service")) +class EquipmentServiceCost(models.Model): + equipment_service_type = models.ForeignKey( + EquipmentServiceType, verbose_name=_("Equipment/Service")) + service_provider = models.CharField( + _("Service provider"), max_length=200, blank=True, default="") flat_rate = models.BooleanField(_("Flat rate"), default=False) unitary_cost = models.FloatField(_("Unitary cost"), blank=True, null=True) - unit = models.CharField(_("Unit"), max_length=1, choices=TECH_UNITS, + unit = models.CharField(_("Unit"), max_length=1, choices=ES_UNITS, blank=True, null=True) + specificity = models.CharField(_("Specificity"), blank=True, + max_length=200, default="") order = models.IntegerField(_("Order"), default=10) - parents = models.ManyToManyField( - "self", - blank=True, - verbose_name=_("Parents"), - help_text=_("Auto-add this cost when a parent is added") - ) + available = models.BooleanField(_("Available"), default=True) class Meta: - verbose_name = _("Technical service cost") - verbose_name_plural = _("Technical service costs") + verbose_name = _("Equipment/service cost") + verbose_name_plural = _("Equipment/service costs") + ordering = ("order", "equipment_service_type__label",) + + def __str__(self): + lbl = str(self.equipment_service_type) + if self.specificity: + lbl += " - " + self.specificity + if self.service_provider: + lbl += f" ({self.service_provider})" + return lbl class FileType(GeneralType): @@ -1205,11 +1193,17 @@ class PreventiveFileGroundJob(ManDays): file = models.ForeignKey(File, related_name="ground_jobs") job = models.ForeignKey(Job) + class Meta: + ordering = ("job",) + class PreventiveFileJob(ManDays): file = models.ForeignKey(File, related_name="jobs") job = models.ForeignKey(Job) + class Meta: + ordering = ("job",) + class TechDays(models.Model): quantity_by_day_planned = models.FloatField( @@ -1237,11 +1231,9 @@ class TechDays(models.Model): return self.days_worked * self.quantity_by_day_worked -class PreventiveFileEquipmentCost(TechDays): +class PreventiveFileEquipmentServiceCost(TechDays): file = models.ForeignKey(File, related_name="equipment_costs") - equipment_cost = models.ForeignKey(EquipmentCost) + equipment_service_cost = models.ForeignKey(EquipmentServiceCost) - -class PreventiveFileTechnicalServiceCost(TechDays): - file = models.ForeignKey(File, related_name="technical_service_costs") - technical_service_cost = models.ForeignKey(TechnicalServiceCost) + class Meta: + ordering = ("equipment_service_cost",) |