diff options
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 |
commit | 55ffbaff487c89c19dbb6d0884e89165f076930a (patch) | |
tree | dad889c528816815475cda838ab745630be11bea /ishtar_common | |
parent | 81727df04417b7c33ed4dfcf9603ad758502a9c0 (diff) | |
download | Ishtar-55ffbaff487c89c19dbb6d0884e89165f076930a.tar.bz2 Ishtar-55ffbaff487c89c19dbb6d0884e89165f076930a.zip |
Bulk update: save
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/forms.py | 30 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/forms/success.html | 4 | ||||
-rw-r--r-- | ishtar_common/views.py | 3 |
3 files changed, 29 insertions, 8 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): diff --git a/ishtar_common/templates/ishtar/forms/success.html b/ishtar_common/templates/ishtar/forms/success.html index 77fa260d1..3b28ac1d8 100644 --- a/ishtar_common/templates/ishtar/forms/success.html +++ b/ishtar_common/templates/ishtar/forms/success.html @@ -9,7 +9,7 @@ $(document).ready(function(){ }); </script> -<div class="modal-dialog modal-sm" id="form-result-div"> +<div class="modal-dialog modal-sm modal-dialog-centered" id="form-result-div"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> @@ -17,7 +17,7 @@ $(document).ready(function(){ </button> </div> <div class="modal-body form-row"> - {% trans "Form successfully submited" %} + {% trans "Changes made successfully." %} </div> </div> </div> diff --git a/ishtar_common/views.py b/ishtar_common/views.py index bd4b70d18..aed24093f 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1817,6 +1817,7 @@ class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView): if not self.model.QA_EDIT.is_available( user=request.user, session=request.session, obj=item): raise Http404() + self.confirm = kwargs.get('confirm', False) and True self.url = request.get_full_path() return super(QAItemEditForm, self).dispatch(request, *args, **kwargs) @@ -1852,5 +1853,5 @@ class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView): return self.form_save(form) def form_save(self, form): - form.save(self.items) + form.save(self.items, self.request.user) return HttpResponseRedirect(reverse("success")) |