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",) | 
