summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitc49706fbb363dffa7b910e00659d7d865072066e (patch)
tree27eeae0039a3482c4f7680729165893af5551a21
parenta11b802415453d60b418c49a37eac1de1a85bdee (diff)
downloadIshtar-c49706fbb363dffa7b910e00659d7d865072066e.tar.bz2
Ishtar-c49706fbb363dffa7b910e00659d7d865072066e.zip
🐛 archaeological files forms: fix preventive formset equipment service (refs #6173)
-rw-r--r--archaeological_files/forms.py13
-rw-r--r--archaeological_files/models.py10
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"),