diff options
Diffstat (limited to 'ishtar_common/forms.py')
| -rw-r--r-- | ishtar_common/forms.py | 144 | 
1 files changed, 72 insertions, 72 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 13e8457f6..eb548f70c 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -263,78 +263,7 @@ class IshtarForm(forms.Form):              widget.options['todayHighlight'] = 'true' -class FieldType(object): -    def __init__(self, key, model, is_multiple=False, extra_args=None): -        self.key = key -        self.model = model -        self.is_multiple = is_multiple -        self.extra_args = extra_args - -    def get_choices(self, initial=None): -        args = { -            'empty_first': not self.is_multiple, -            'initial': initial -        } -        if self.extra_args: -            args.update(self.extra_args) -        return self.model.get_types(**args) - -    def get_help(self): -        args = {} -        if self.extra_args: -            args.update(self.extra_args) -        return self.model.get_help(**args) - - -class ManageOldType(IshtarForm): -    TYPES = []  # FieldType list - -    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:] -                if hasattr(kwargs['data'], 'getlist'): -                    items = kwargs['data'].getlist(k) -                else: -                    items = [kwargs['data'][k]] -                for val in items: -                    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]: -                    if hasattr(kwargs['initial'], 'getlist'): -                        items = kwargs['initial'].getlist(k) -                    else: -                        items = [kwargs['initial'][k]] -                    for val in items: -                        if not val: -                            continue -                        if k not in self.init_data: -                            self.init_data[k] = [] -                        self.init_data[k].append(val) -        self.init_data = MultiValueDict(self.init_data) -        super(ManageOldType, self).__init__(*args, **kwargs) -        for field in self.TYPES: -            if field.key not in self.fields: -                continue -            self.fields[field.key].choices = field.get_choices( -                initial=self.init_data.get(field.key)) -            self.fields[field.key].help_text = field.get_help() - - -class TableSelect(ManageOldType): +class TableSelect(IshtarForm):      def __init__(self, *args, **kwargs):          super(TableSelect, self).__init__(*args, **kwargs)          # no field is required for search @@ -432,6 +361,77 @@ def get_data_from_formset(data):      return values +class FieldType(object): +    def __init__(self, key, model, is_multiple=False, extra_args=None): +        self.key = key +        self.model = model +        self.is_multiple = is_multiple +        self.extra_args = extra_args + +    def get_choices(self, initial=None): +        args = { +            'empty_first': not self.is_multiple, +            'initial': initial +        } +        if self.extra_args: +            args.update(self.extra_args) +        return self.model.get_types(**args) + +    def get_help(self): +        args = {} +        if self.extra_args: +            args.update(self.extra_args) +        return self.model.get_help(**args) + + +class ManageOldType(IshtarForm): +    TYPES = []  # FieldType list + +    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:] +                if hasattr(kwargs['data'], 'getlist'): +                    items = kwargs['data'].getlist(k) +                else: +                    items = [kwargs['data'][k]] +                for val in items: +                    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]: +                    if hasattr(kwargs['initial'], 'getlist'): +                        items = kwargs['initial'].getlist(k) +                    else: +                        items = [kwargs['initial'][k]] +                    for val in items: +                        if not val: +                            continue +                        if k not in self.init_data: +                            self.init_data[k] = [] +                        self.init_data[k].append(val) +        self.init_data = MultiValueDict(self.init_data) +        super(ManageOldType, self).__init__(*args, **kwargs) +        for field in self.TYPES: +            if field.key not in self.fields: +                continue +            self.fields[field.key].choices = field.get_choices( +                initial=self.init_data.get(field.key)) +            self.fields[field.key].help_text = field.get_help() + +  class DocumentGenerationForm(forms.Form):      """      Form to generate document by choosing the template  | 
