diff options
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 |