summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2022-07-07 11:12:16 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-07-08 09:59:31 +0200
commit3c8cf538438abbf9d9b9951ae4112f404f5c6bbd (patch)
tree72f513ef274a2ddb8eef5bfcb4ae2625cb7d08b2
parent013db4c21bf74a75f087e8d7ca8f6a334c3f3cba (diff)
downloadIshtar-3c8cf538438abbf9d9b9951ae4112f404f5c6bbd.tar.bz2
Ishtar-3c8cf538438abbf9d9b9951ae4112f404f5c6bbd.zip
Preventive file form: filter jobs and equipements by price agreement
-rw-r--r--archaeological_files/forms.py13
-rw-r--r--archaeological_files/models.py4
2 files changed, 15 insertions, 2 deletions
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py
index 1958cb2ae..d6ce59b28 100644
--- a/archaeological_files/forms.py
+++ b/archaeological_files/forms.py
@@ -686,7 +686,13 @@ class PreventiveFileGenJobForm(PreventiveFileForm):
current_value = None
if hasattr(self.instance, "job") and self.instance.job:
current_value = self.instance.job
- self.fields["job"].choices = models.Job.get_choices(current_value)
+ 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.fields["job"].choices = models.Job.get_choices(
+ current_value, price_agreement_id=price_agreement_id
+ )
def save(self, commit=True):
item = super().save(commit=True)
@@ -796,9 +802,14 @@ class PreventiveFileEquipmentServiceForm(PreventiveFileForm):
def __init__(self, *args, **kwargs):
super(PreventiveFileEquipmentServiceForm, self).__init__(*args, **kwargs)
+ 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"]
q = models.EquipmentServiceCost.objects.filter(
available=True,
parent__isnull=True,
+ price_agreement_id=price_agreement_id,
equipment_service_type__generic_equipment_type__txt_idx=self.type_filter,
)
diff --git a/archaeological_files/models.py b/archaeological_files/models.py
index 60f9882fe..829c8c550 100644
--- a/archaeological_files/models.py
+++ b/archaeological_files/models.py
@@ -126,11 +126,13 @@ class Job(GeneralType):
return lbl
@classmethod
- def get_choices(cls, current_value):
+ def get_choices(cls, current_value, price_agreement_id=None):
q = cls.objects.filter(
available=True,
parents__isnull=True,
)
+ 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: