From 9adecf879bab5e7633acbcab3fae21bf52ecc73c Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 22 Mar 2022 11:36:37 +0100 Subject: QA CR - parcel: fix multiple operation check - fix display on confirm - change widget for multiple operation (refs #5293) --- archaeological_context_records/forms.py | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'archaeological_context_records/forms.py') 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)) -- cgit v1.2.3