summaryrefslogtreecommitdiff
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
parent81727df04417b7c33ed4dfcf9603ad758502a9c0 (diff)
downloadIshtar-55ffbaff487c89c19dbb6d0884e89165f076930a.tar.bz2
Ishtar-55ffbaff487c89c19dbb6d0884e89165f076930a.zip
Bulk update: save
-rw-r--r--archaeological_finds/forms.py4
-rw-r--r--archaeological_finds/templates/ishtar/sheet_find.html7
-rw-r--r--ishtar_common/forms.py30
-rw-r--r--ishtar_common/templates/ishtar/forms/success.html4
-rw-r--r--ishtar_common/views.py3
5 files changed, 32 insertions, 16 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 1605c4d6a..fff378ff0 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -356,8 +356,8 @@ class QAFindFormMulti(QAForm):
qa_seal_number = forms.CharField(label=_(u"Seal number"), required=False)
qa_mark = forms.CharField(label=_(u"Mark"), required=False)
- qa_description = forms.CharField(label=_(u"Description"),
- widget=forms.Textarea, required=False)
+ qa_description = forms.CharField(
+ label=_(u"Description"), widget=forms.Textarea, required=False)
qa_material_types = widgets.Select2MultipleField(
label=_(u"Material types"), required=False
)
diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html
index 43136e357..021ea5652 100644
--- a/archaeological_finds/templates/ishtar/sheet_find.html
+++ b/archaeological_finds/templates/ishtar/sheet_find.html
@@ -93,12 +93,7 @@
<h3>{% trans "Sheet" %}</h3>
<div class='row'>
{% trans "Checked" as checked_label %}
- {% if item.CHECK_DICT %}
- {% field_flex checked_label item.checked|from_dict:item.CHECK_DICT %}
- {% endif%}
- {% if item.history_object and item.history_object.CHECK_DICT %}
- {% field_flex checked_label item.checked|from_dict:item.history_object.CHECK_DICT %}
- {% endif%}
+ {% field_flex checked_label item.checked_type %}
{% field_flex "Check date" item.check_date %}
{% include "ishtar/blocks/sheet_creation_section.html" %}
</div>
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"))