diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-02 10:44:05 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-02 10:44:05 +0200 |
| commit | c96cba070566ab4703504591a413b9c1e5106f3a (patch) | |
| tree | 34d3b440a0abefac2d3919aee4690c1ea1f704e5 /ishtar_common/forms.py | |
| parent | 0f03de06a49675ef16cf5ed0a297524554e06525 (diff) | |
| parent | 4190b4a7dc03c0b9f1ca4113b4d0706c1bfffa19 (diff) | |
| download | Ishtar-c96cba070566ab4703504591a413b9c1e5106f3a.tar.bz2 Ishtar-c96cba070566ab4703504591a413b9c1e5106f3a.zip | |
Merge branch 'v0.9' into wheezy
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 |
