diff options
| -rw-r--r-- | archaeological_context_records/forms.py | 33 | 
1 files changed, 24 insertions, 9 deletions
| diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py index 0799991dd..06610f936 100644 --- a/archaeological_context_records/forms.py +++ b/archaeological_context_records/forms.py @@ -754,21 +754,30 @@ class QAContextRecordFormMulti(QAForm):          super(QAContextRecordFormMulti, self).__init__(*args, **kwargs)          self.items = kwargs.pop("items")          disable = False + +        if "qa_parcel" not in self.fields or not self.items: +            return +        op_pk = self.items[0].operation_id          if len(self.items) > 1: -            op_pk = self.items[0].pk              for cr in self.items[1:]: -                if op_pk != cr.operation.pk: +                if op_pk != cr.operation_id:                      disable = self.fields["qa_parcel"].disabled = True -                    self.fields["qa_parcel"].choices = [ -                        (1, _("Parcel can be modified only if operations are the same")) -                    ] + +                    self.fields["qa_parcel"].widget = forms.TextInput( +                        attrs={ +                            "class": 'w-100', +                            "placeholder": _( +                                "Parcel can be modified only if operations are the same" +                            )} +                    )                      break          if not disable: -            self.fields["qa_parcel"].choices += [ -                (p.pk, str(p)) for p in Parcel.objects.filter( -                    operation=self.items[-1].operation.pk -                ).all() +            choices = [ +                (p.pk, str(p)) for p in Parcel.objects.filter(operation_id=op_pk).all()              ] +            self.fields["qa_parcel"].choices = choices +            if len(choices) == 1: +                self.fields["qa_parcel"].disabled = True      def clean(self):          cleaned_data = super().clean() @@ -787,6 +796,12 @@ class QAContextRecordFormMulti(QAForm):          except ArchaeologicalSite.DoesNotExist:              return "" +    def _get_qa_parcel(self, value): +        try: +            return str(Parcel.objects.get(pk=value)) +        except Parcel.DoesNotExist: +            return "" +      def _get_qa_related_to(self, value):          try:              return str(models.ContextRecord.objects.get(pk=value)) | 
