summaryrefslogtreecommitdiff
path: root/ishtar_common/forms.py
diff options
context:
space:
mode:
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
commit038c7ce8bbb1d40a99c98811f1c267a6218b22c2 (patch)
treedf7cf20de56e13c9660d14219d7ee5d825bb2909 /ishtar_common/forms.py
parent365546bcd78bed54c6ab2d7f375b86cde8caa66f (diff)
downloadIshtar-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.py144
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