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 |