diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-12 17:44:47 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-12 17:48:00 +0100 |
commit | c49706fbb363dffa7b910e00659d7d865072066e (patch) | |
tree | 27eeae0039a3482c4f7680729165893af5551a21 | |
parent | a11b802415453d60b418c49a37eac1de1a85bdee (diff) | |
download | Ishtar-c49706fbb363dffa7b910e00659d7d865072066e.tar.bz2 Ishtar-c49706fbb363dffa7b910e00659d7d865072066e.zip |
🐛 archaeological files forms: fix preventive formset equipment service (refs #6173)
-rw-r--r-- | archaeological_files/forms.py | 13 | ||||
-rw-r--r-- | archaeological_files/models.py | 10 |
2 files changed, 17 insertions, 6 deletions
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index 4519fbd90..4c7feaa04 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -1017,14 +1017,14 @@ class PreventiveFileEquipmentServiceForm(PreventiveFileForm): def __init__(self, *args, **kwargs): super(PreventiveFileEquipmentServiceForm, self).__init__(*args, **kwargs) - price_agreement_id = None + self.price_agreement_id = None q = models.File.objects.filter(pk=self.file_id).values("price_agreement_id") if q.count(): - price_agreement_id = q.all()[0]["price_agreement_id"] + self.price_agreement_id = q.all()[0]["price_agreement_id"] q = models.EquipmentServiceCost.objects.filter( available=True, parent__isnull=True, - price_agreement_id=price_agreement_id, + price_agreement_id=self.price_agreement_id, equipment_service_type__generic_equipment_type__txt_idx=self.type_filter, ) @@ -1052,9 +1052,12 @@ class PreventiveFileEquipmentServiceForm(PreventiveFileForm): def save(self, commit=True): item = super().save(commit=True) - if not item: + if not item or not self.price_agreement_id: return - for child in item.equipment_service_cost.equipment_service_type.children.all(): + q = item.equipment_service_cost.equipment_service_type.children.filter( + price_agreement_id=self.price_agreement_id + ) + for child in q.all(): if not self._meta.model.objects.filter( file_id=item.file_id, equipment_service_cost=child ).count(): diff --git a/archaeological_files/models.py b/archaeological_files/models.py index b45589509..26e7136b2 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -156,7 +156,15 @@ class Job(GeneralType): 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))) + if current_value.price_agreement_id == price_agreement_id: + lbl = current_value.display_label + if current_value.permanent_contract: + permanent.append((current_value.pk, lbl)) + else: + fixed_term.append((current_value.pk, lbl)) + else: + lbl = str(current_value) + choices.append((current_value.pk, lbl)) choices += [ ( _("Permanent contract"), |