diff options
| -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: | 
