diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-12 16:20:30 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-12 16:23:40 +0100 |
commit | cf386287da6c20da6f0df500ac5c228e6a847724 (patch) | |
tree | 1107e2620576170d1014381bdd28dcf00afec88c | |
parent | 51eaeed4339a98495eb0f2f5189fa8bdef80fe7c (diff) | |
download | Ishtar-cf386287da6c20da6f0df500ac5c228e6a847724.tar.bz2 Ishtar-cf386287da6c20da6f0df500ac5c228e6a847724.zip |
🐛 archaeological files - preventive: display detailled cost with "display_label" (refs #6172)
-rw-r--r-- | archaeological_files/forms.py | 2 | ||||
-rw-r--r-- | archaeological_files/models.py | 35 | ||||
-rw-r--r-- | archaeological_files/templates/ishtar/sheet_file.html | 6 |
3 files changed, 29 insertions, 14 deletions
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index b14147dc0..4519fbd90 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -1079,7 +1079,7 @@ class PreventiveFileEquipmentServiceBaseFormSet(FileBaseFormset): ) | Q( equipment_service_cost__parent__generic_equipment_type__txt_idx=self.type_filter ) - queryset = queryset.filter(q).order_by() + queryset = queryset.filter(q).order_by("-equipment_service_cost__parent") return queryset diff --git a/archaeological_files/models.py b/archaeological_files/models.py index 47e6185ca..b45589509 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -125,12 +125,16 @@ class Job(GeneralType): ) ADMIN_SECTION = _("Preventive") - def __str__(self): + @property + def display_label(self): lbl = self.label if not self.permanent_contract: lbl += " ({})".format(_("fixed-term contract")) return lbl + def __str__(self): + return self.display_label + f" - {self.price_agreement}" + @property def has_parents(self): return bool(self.parents.count()) @@ -143,14 +147,17 @@ class Job(GeneralType): ) if price_agreement_id: q = q.filter(price_agreement=price_agreement_id) - permanent = [(j.pk, str(j)) for j in q.filter(permanent_contract=True).all()] - fixed_term = [(j.pk, str(j)) for j in q.filter(permanent_contract=False).all()] - if current_value: - if current_value.permanent_contract: - permanent.append((current_value.pk, str(current_value))) - else: - fixed_term.append((current_value.pk, str(current_value))) - return [("", "-" * 9)] + [ + permanent = [ + (j.pk, j.display_label) for j in q.filter(permanent_contract=True).all() + ] + fixed_term = [ + (j.pk, j.display_label) for j in q.filter(permanent_contract=False).all() + ] + choices = [("", "-" * 9)] + if current_value and \ + current_value.pk not in [pk for pk, __ in (permanent + fixed_term)]: + choices.append((current_value.pk, str(current_value))) + choices += [ ( _("Permanent contract"), permanent, @@ -160,6 +167,7 @@ class Job(GeneralType): fixed_term, ), ] + return choices class GenericEquipmentServiceType(GeneralType): @@ -266,7 +274,7 @@ class EquipmentServiceCost(models.Model): Used for automatic documentation generation """ s = [] - exclude = ["id", "order", "availabel"] + exclude = ["id", "order", "available"] for field in cls._meta.get_fields(): if field.name in exclude: continue @@ -275,6 +283,13 @@ class EquipmentServiceCost(models.Model): s = ", ".join(s) return s + @property + def display_label(self): + lbl = str(self.equipment_service_type) + if self.specificity: + lbl += " - " + self.specificity + return lbl + def __str__(self): lbl = "" if self.parent: diff --git a/archaeological_files/templates/ishtar/sheet_file.html b/archaeological_files/templates/ishtar/sheet_file.html index a5e9d4013..9a347c978 100644 --- a/archaeological_files/templates/ishtar/sheet_file.html +++ b/archaeological_files/templates/ishtar/sheet_file.html @@ -300,7 +300,7 @@ </thead> {% for job in item.ground_jobs.all %} <tr> - <td><em>{{job.job}}</em></td> + <td><em>{{job.job.display_label}}</em></td> <td class="text-right">{{job.man_by_day_planned|default:"-"}}</td> <td class="text-right">{{job.days_planned|default:"-"}}</td> <td class="text-right">{{job.cost_planned|default:"-"|floatformat:2}}</td> @@ -352,7 +352,7 @@ </thead> {% for job in item.jobs.all %} <tr> - <td><em>{{job.job}}</em></td> + <td><em>{{job.job.display_label}}</em></td> <td class="text-right">{{job.man_by_day_planned|default:"-"}}</td> <td class="text-right">{{job.days_planned|default:"-"}}</td> <td class="text-right">{{job.cost_planned|default:"-"|floatformat:2}}</td> @@ -405,7 +405,7 @@ {% for equipment in equipments %} {% if equipment.cost_planned or equipment.cost_worked %} <tr> - <td><em>{{equipment.equipment_service_cost.equipment_service_type.label}}</em></td> + <td><em>{{equipment.equipment_service_cost.display_label}}</em></td> <td class="text-right">{{equipment.quantity_by_day_planned|default:"-"}}</td> <td class="text-right">{{equipment.days_planned|default:"-"}}</td> <td>{{equipment.equipment_service_cost.unit_label}}</td> |