diff options
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 |
commit | f69ec0cd38ddf1beee2794ab961c05a3998d0658 (patch) | |
tree | 4cf2d6c0a3035d3311e77f1fdc8b31fd5b85ab6d /ishtar_common/forms.py | |
parent | 55ffbaff487c89c19dbb6d0884e89165f076930a (diff) | |
download | Ishtar-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.py | 57 |
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): |