From 55ffbaff487c89c19dbb6d0884e89165f076930a Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 10 Sep 2018 11:12:18 +0200 Subject: Bulk update: save --- archaeological_finds/forms.py | 4 +-- .../templates/ishtar/sheet_find.html | 7 +---- ishtar_common/forms.py | 30 ++++++++++++++++++---- ishtar_common/templates/ishtar/forms/success.html | 4 +-- ishtar_common/views.py | 3 ++- 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 @@

{% trans "Sheet" %}

{% 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" %}
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(){ }); -