diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-03-04 16:13:11 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-03-04 16:13:11 +0100 |
commit | fd29eb529c5b14ca22f2b7000c1f8d2d79ba412c (patch) | |
tree | dc3767f5df1498adaef0e8f333787ba241f1380a | |
parent | ae0eaa3f3f5c3b3f0268699b716cf0e589f92d0d (diff) | |
download | Ishtar-fd29eb529c5b14ca22f2b7000c1f8d2d79ba412c.tar.bz2 Ishtar-fd29eb529c5b14ca22f2b7000c1f8d2d79ba412c.zip |
QA operation: finds/doc received
-rw-r--r-- | archaeological_operations/forms.py | 22 | ||||
-rw-r--r-- | ishtar_common/forms.py | 35 |
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: |