summaryrefslogtreecommitdiff
path: root/ishtar_common/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-09-10 11:12:18 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-10-24 12:06:08 +0200
commit55ffbaff487c89c19dbb6d0884e89165f076930a (patch)
treedad889c528816815475cda838ab745630be11bea /ishtar_common/forms.py
parent81727df04417b7c33ed4dfcf9603ad758502a9c0 (diff)
downloadIshtar-55ffbaff487c89c19dbb6d0884e89165f076930a.tar.bz2
Ishtar-55ffbaff487c89c19dbb6d0884e89165f076930a.zip
Bulk update: save
Diffstat (limited to 'ishtar_common/forms.py')
-rw-r--r--ishtar_common/forms.py30
1 files changed, 25 insertions, 5 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index c36c9b07d..13586e203 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -645,6 +645,7 @@ class ManageOldType(IshtarForm):
class QAForm(CustomForm, ManageOldType):
MULTI = False
SINGLE_FIELDS = []
+ REPLACE_FIELDS = []
def __init__(self, *args, **kwargs):
self.items = kwargs.pop('items')
@@ -667,18 +668,37 @@ class QAForm(CustomForm, ManageOldType):
and k in kwargs['data'] and kwargs['data'][k]:
self.fields[k].rendered_value = dict(
self.fields[k].choices)[int(kwargs['data'][k])]
- if self.MULTI and k not in self.REPLACE_FIELDS:
+ if k not in self.REPLACE_FIELDS:
self.fields[k].label = unicode(self.fields[k].label) + \
unicode(u" - append to existing")
else:
self.fields[k].label = unicode(self.fields[k].label) + \
unicode(u" - replace")
- def save(self, items):
+ def save(self, items, user):
for item in items:
- for key in self.cleaned_data:
- pass
- #setattr(item, key, self.cleaned_data[key])
+ 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)
+ 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()
class DocumentGenerationForm(forms.Form):