summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2022-03-22 11:36:37 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-07-08 09:58:49 +0200
commit9b9031edb7da43569f25a7d1a5aaf8d499718c93 (patch)
treede40139e261b9db328fe7b7f30a136f73440162f
parentf5c7a28f75d2eb31046aee3e49acc04f14caae9b (diff)
downloadIshtar-9b9031edb7da43569f25a7d1a5aaf8d499718c93.tar.bz2
Ishtar-9b9031edb7da43569f25a7d1a5aaf8d499718c93.zip
QA CR - parcel: fix multiple operation check - fix display on confirm - change widget for multiple operation (refs #5293)
-rw-r--r--archaeological_context_records/forms.py33
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))