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 return { 'js_files' : ['js/form.js', 'js/jquery.validate.js', ],
34 'css_files' : ['css/form.css']
36 def export_json_settings(self):
37 # We need initialization, even though we are not associated with a query
40 def template_env (self, request):
42 env.update(self.__dict__)
43 #env['columns']=self.columns
46 def template_file (self):
49 def json_settings_list (self): return ['plugin_uuid', 'columns']
51 def get_validation_js(self):
52 # XXX We need to avoid sending the same query twice !"
53 # somehow store something into the dom, to perform an update afterwards
54 # XXX This should be moved to a template
55 # XXX We also need some storage into the wizard to be displayed later
57 // Useless since this is now a parameter
58 //frm = document.forms['form_%(domid)s'];
60 // Loop on the fields and test regexp if present
62 $.each(options.columns, function(column) {
63 if (!frm.elements[column['field']].match(column['validate_rx'])) {
64 $('err_%(domid)s_' + column['field']).html(column['validation_err']);