diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-02-14 12:39:03 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-02-15 17:20:19 +0100 |
commit | 038c7ce8bbb1d40a99c98811f1c267a6218b22c2 (patch) | |
tree | df7cf20de56e13c9660d14219d7ee5d825bb2909 /ishtar_common/forms.py | |
parent | 365546bcd78bed54c6ab2d7f375b86cde8caa66f (diff) | |
download | Ishtar-038c7ce8bbb1d40a99c98811f1c267a6218b22c2.tar.bz2 Ishtar-038c7ce8bbb1d40a99c98811f1c267a6218b22c2.zip |
Archaeological site: search view (refs #3913)
- add site to profile
- allow alternate label in menus for sites
- add entry in menu
- basic configuration of site model
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 eb548f70c..13e8457f6 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -263,7 +263,78 @@ class IshtarForm(forms.Form): widget.options['todayHighlight'] = 'true' -class TableSelect(IshtarForm): +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): def __init__(self, *args, **kwargs): super(TableSelect, self).__init__(*args, **kwargs) # no field is required for search @@ -361,77 +432,6 @@ 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 |