diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-02 10:10:59 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-02 10:10:59 +0200 |
commit | 151e42654a4bcfcff408c7799db199c71e81b5c5 (patch) | |
tree | 02786db1039902c7cc75f76aa7159829299970ac /ishtar_common/forms.py | |
parent | 661218e0acd24fc3bca76229b61d0cb91a54be1c (diff) | |
parent | 5eb8667794636e379a8c324da46c617ad365747a (diff) | |
download | Ishtar-151e42654a4bcfcff408c7799db199c71e81b5c5.tar.bz2 Ishtar-151e42654a4bcfcff408c7799db199c71e81b5c5.zip |
Merge branch 'master' into v0.9
Diffstat (limited to 'ishtar_common/forms.py')
-rw-r--r-- | ishtar_common/forms.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 89df1b1a5..79ca2c360 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -194,6 +194,37 @@ def get_data_from_formset(data): return values +class ManageOldType(object): + def __init__(self, *args, **kwargs): + """ + init_data is used to manage deactivated items in list when editing + old data + """ + prefix = kwargs.get('prefix') or '' + self.init_data = {} + if 'data' in kwargs and kwargs['data']: + for k in kwargs['data']: + if prefix not in k: + continue + new_k = k[len(prefix) + 1:] + for val in kwargs['data'].getlist(k): + if not val: + continue + if new_k not in self.init_data: + self.init_data[new_k] = [] + self.init_data[new_k].append(val) + if 'initial' in kwargs and kwargs['initial']: + for k in kwargs['initial']: + if k not in self.init_data or not self.init_data[k]: + for val in kwargs['initial'].getlist(k): + if not val: + continue + if k not in self.init_data: + self.init_data[k] = [] + self.init_data[k].append(val) + super(ManageOldType, self).__init__(*args, **kwargs) + + class DocumentGenerationForm(forms.Form): """ Form to generate document by choosing the template |