summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_operations/forms.py22
-rw-r--r--ishtar_common/forms.py35
2 files changed, 55 insertions, 2 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index c9d95c506..c671a0d88 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -1868,6 +1868,8 @@ class QAOperationFormMulti(QAForm):
REPLACE_FIELDS = [
'qa_operation_type',
'qa_operator',
+ 'qa_documentation_received',
+ 'qa_finds_received',
]
qa_operation_type = forms.ChoiceField(
label=_("Operation type"), required=False
@@ -1881,6 +1883,14 @@ class QAOperationFormMulti(QAForm):
limit={'organization_type': organization_type_pk_lazy('operator')},
associated_model=Organization, new=True),
validators=[valid_id(Organization)], required=False)
+ qa_documentation_received = forms.ChoiceField(
+ label=_("Documentation received"), required=False,
+ choices=QAForm.NULL_BOOL_CHOICES
+ )
+ qa_finds_received = forms.ChoiceField(
+ label=_("Finds received"), required=False,
+ choices=QAForm.NULL_BOOL_CHOICES
+ )
TYPES = [
FieldType('qa_operation_type', models.OperationType),
@@ -1900,6 +1910,18 @@ class QAOperationFormMulti(QAForm):
return ""
return value
+ def _get_qa_finds_received(self, value):
+ return self._get_null_boolean_field(value)
+
+ def _get_qa_documentation_received(self, value):
+ return self._get_null_boolean_field(value)
+
+ def _set_qa_finds_received(self, item, __):
+ return self._set_null_boolean_field(item, "qa_finds_received")
+
+ def _set_qa_documentation_received(self, item, __):
+ return self._set_null_boolean_field(item, "qa_documentation_received")
+
class QAOperationDuplicateForm(IshtarForm):
qa_code_patriarche = forms.CharField(
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 27741c576..db627789f 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -1079,7 +1079,13 @@ class QAForm(CustomForm, ManageOldType):
MULTI = False
SINGLE_FIELDS = []
REPLACE_FIELDS = []
- PREFIX= "qa_"
+ PREFIX = "qa_"
+ NULL_BOOL_CHOICES = (
+ ("", "--"),
+ ("1", _("Unknown")),
+ ("2", _("Yes")),
+ ("3", _("No")),
+ )
def __init__(self, *args, **kwargs):
self.items = kwargs.pop('items')
@@ -1100,8 +1106,12 @@ class QAForm(CustomForm, ManageOldType):
self.fields[k].widget = forms.HiddenInput()
if k in kwargs['data'] and kwargs['data'][k]:
if hasattr(self, "_get_" + k):
- self.fields[k].rendered_value = getattr(
+ value = getattr(
self, "_get_" + k)(kwargs['data'][k])
+ if value is None:
+ self.fields.pop(k)
+ continue
+ self.fields[k].rendered_value = value
elif hasattr(self.fields[k], "choices"):
values = []
for v in kwargs['data'].getlist(k):
@@ -1150,6 +1160,27 @@ class QAForm(CustomForm, ManageOldType):
value = getattr(item, key) + "\n" + value
setattr(item, key, value)
+ def _get_null_boolean_field(self, value):
+ if value == "1":
+ return _("Set to null")
+ elif value == "2":
+ return _("Yes")
+ elif value == "3":
+ return _("No")
+ return
+
+ def _set_null_boolean_field(self, item, key):
+ value = self.cleaned_data.get(key, None)
+ if value == "1":
+ value = None
+ elif value == "2":
+ value = True
+ elif value == "3":
+ value = False
+ else:
+ return
+ setattr(item, key[3:], value)
+
def save(self, items, user):
for item in items:
for base_key in self.cleaned_data: