1 from unfold.composite import Composite
2 from unfold.plugin import Plugin
4 class CreateForm (Plugin):
6 def __init__ (self, **settings):
7 Plugin.__init__(self, **settings)
8 print "SETTINGS", settings
9 assert 'page' in settings, "You should specify page"
10 assert 'object' in settings or 'fields' in settings, "You should specify object or field list"
12 if 'object' in settings:
13 # Retrieve object fields from metadata
14 metadata = settings['page'].get_metadata()
15 md_o = metadata.details_by_object(settings['object'])
16 self.columns = md_o['column']
18 elif 'fields' in settings:
20 for field in settings['fields']:
22 'name' : field.get('name', ''),
23 'field' : field.get('field', ''),
24 'type' : field.get('type', 'input'),
25 'description' : field.get('description', ''),
26 'validate_rx' : field.get('validate_rx', ''),
27 'validate_err' : field.get('validate_err', ''),
30 self.columns.append(c)
32 def requirements (self):
33 # Some should be included by default by manifold
34 return { 'js_files' : ['js/manifold.js', 'js/spin.presets.js', 'js/spin.min.js', 'js/jquery.spin.js',
35 'js/form.js', 'js/jquery.validate.js', ],
36 'css_files' : ['css/form.css']
38 def export_json_settings(self):
39 # We need initialization, even though we are not associated with a query
42 def template_env (self, request):
44 env.update(self.__dict__)
45 #env['columns']=self.columns
48 def template_file (self):
51 def json_settings_list (self): return ['plugin_uuid', 'columns']
53 def get_validation_js(self):
54 # XXX We need to avoid sending the same query twice !"
55 # somehow store something into the dom, to perform an update afterwards
56 # XXX This should be moved to a template
57 # XXX We also need some storage into the wizard to be displayed later
59 // Useless since this is now a parameter
60 //frm = document.forms['form_%(domid)s'];
62 // Loop on the fields and test regexp if present
64 $.each(options.columns, function(column) {
65 if (!frm.elements[column['field']].match(column['validate_rx'])) {
66 $('err_%(domid)s_' + column['field']).html(column['validation_err']);