summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-02-14 18:03:56 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-02-15 17:20:19 +0100
commitc8f5d324cad4de6b51cc8b954fe3f5b4fc874c47 (patch)
tree92b533c6b223a7fa9d6a7e4e00b057c5c3195a40 /ishtar_common
parent92d1c49f7639579a5b20d2fcd00c4430b191ee4d (diff)
downloadIshtar-c8f5d324cad4de6b51cc8b954fe3f5b4fc874c47.tar.bz2
Ishtar-c8f5d324cad4de6b51cc8b954fe3f5b4fc874c47.zip
Archaeological site: simple creation wizard (refs #3913)
Diffstat (limited to 'ishtar_common')
-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 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