summaryrefslogtreecommitdiff
path: root/ishtar_common/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-09-10 13:08:48 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-10-24 12:06:08 +0200
commitf69ec0cd38ddf1beee2794ab961c05a3998d0658 (patch)
tree4cf2d6c0a3035d3311e77f1fdc8b31fd5b85ab6d /ishtar_common/forms.py
parent55ffbaff487c89c19dbb6d0884e89165f076930a (diff)
downloadIshtar-f69ec0cd38ddf1beee2794ab961c05a3998d0658.tar.bz2
Ishtar-f69ec0cd38ddf1beee2794ab961c05a3998d0658.zip
Find bulk update: modify context record
Diffstat (limited to 'ishtar_common/forms.py')
-rw-r--r--ishtar_common/forms.py57
1 files changed, 33 insertions, 24 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 13586e203..4bf9e4bd9 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -664,10 +664,13 @@ class QAForm(CustomForm, ManageOldType):
self.fields[k].widget = forms.MultipleHiddenInput()
else:
self.fields[k].widget = forms.HiddenInput()
- if hasattr(self.fields[k], "choices") \
- and k in kwargs['data'] and kwargs['data'][k]:
- self.fields[k].rendered_value = dict(
- self.fields[k].choices)[int(kwargs['data'][k])]
+ if k in kwargs['data'] and kwargs['data'][k]:
+ if hasattr(self, "_get_" + k):
+ self.fields[k].rendered_value = getattr(
+ self, "_get_" + k)(kwargs['data'][k])
+ elif hasattr(self.fields[k], "choices"):
+ self.fields[k].rendered_value = dict(
+ self.fields[k].choices)[int(kwargs['data'][k])]
if k not in self.REPLACE_FIELDS:
self.fields[k].label = unicode(self.fields[k].label) + \
unicode(u" - append to existing")
@@ -675,30 +678,36 @@ class QAForm(CustomForm, ManageOldType):
self.fields[k].label = unicode(self.fields[k].label) + \
unicode(u" - replace")
+ def _set_value(self, item, base_key):
+ value = self.cleaned_data[base_key]
+ if not value:
+ return
+ key = base_key[len("qa_"):]
+ field = item._meta.get_field(key)
+ if getattr(field, 'related_model', None):
+ if type(value) == list:
+ value = [field.related_model.objects.get(pk=v)
+ for v in value]
+ else:
+ value = field.related_model.objects.get(pk=value)
+ if getattr(field, 'many_to_many', None):
+ for v in value:
+ getattr(item, key).add(v)
+ else:
+ if base_key not in self.REPLACE_FIELDS:
+ if getattr(item, key):
+ value = getattr(item, key) + u"\n" + value
+ setattr(item, key, value)
+
def save(self, items, user):
for item in items:
for base_key in self.cleaned_data:
- value = self.cleaned_data[base_key]
- if not value:
- continue
- key = base_key[len("qa_"):]
- field = item._meta.get_field(key)
- if getattr(field, 'related_model', None):
- if type(value) == list:
- value = [field.related_model.objects.get(pk=v)
- for v in value]
- else:
- value = field.related_model.objects.get(pk=value)
- if getattr(field, 'many_to_many', None):
- for v in value:
- getattr(item, key).add(v)
+ if hasattr(self, '_set_' + base_key):
+ getattr(self, '_set_' + base_key)(item, user)
else:
- if base_key not in self.REPLACE_FIELDS:
- if getattr(item, key):
- value = getattr(item, key) + u"\n" + value
- setattr(item, key, value)
- item.history_modifier = user
- item.save()
+ self._set_value(item, base_key)
+ item.history_modifier = user
+ item.save()
class DocumentGenerationForm(forms.Form):