summaryrefslogtreecommitdiff
path: root/ishtar_common/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/forms.py')
-rw-r--r--ishtar_common/forms.py35
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: