diff options
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 |
commit | 3c8cf538438abbf9d9b9951ae4112f404f5c6bbd (patch) | |
tree | 72f513ef274a2ddb8eef5bfcb4ae2625cb7d08b2 | |
parent | 013db4c21bf74a75f087e8d7ca8f6a334c3f3cba (diff) | |
download | Ishtar-3c8cf538438abbf9d9b9951ae4112f404f5c6bbd.tar.bz2 Ishtar-3c8cf538438abbf9d9b9951ae4112f404f5c6bbd.zip |
Preventive file form: filter jobs and equipements by price agreement
-rw-r--r-- | archaeological_files/forms.py | 13 | ||||
-rw-r--r-- | archaeological_files/models.py | 4 |
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: |