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): | 
