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 | 
