diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-01 18:49:14 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-01 18:49:14 +0200 |
commit | caebc92f6e7f0a3e8445d054edd5587c58920c76 (patch) | |
tree | cfcbb351671ea74fd6b9ab43ea4b61d3e4fc661a /ishtar_common/forms.py | |
parent | f0901e79cd11ead1d5ac2543ac4affcf23a5f05f (diff) | |
download | Ishtar-caebc92f6e7f0a3e8445d054edd5587c58920c76.tar.bz2 Ishtar-caebc92f6e7f0a3e8445d054edd5587c58920c76.zip |
Non-available types display on old item modification (refs #3179)
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 |