diff options
Diffstat (limited to 'ishtar_common/forms.py')
-rw-r--r-- | ishtar_common/forms.py | 35 |
1 files changed, 33 insertions, 2 deletions
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: |