Merge branch 'master' of ssh://git.onelab.eu/git/myslice
[myslice.git] / plugins / form / __init__.py
index 5081501..ff569d5 100644 (file)
@@ -9,30 +9,44 @@ class CreateForm (Plugin):
         assert 'page'   in settings, "You should specify page"
         assert 'object' in settings, "You should specify object"
 
         assert 'page'   in settings, "You should specify page"
         assert 'object' in settings, "You should specify object"
 
-        # Retrieve object fields from metadata
-        metadata = settings['page'].get_metadata()
-        md_o = metadata.details_by_object(settings['object'])
-        self.columns = md_o['column']
+        if 'object' in settings:
+            self.object = settings['object']
+
+        if 'fields' in settings:
+            self.fields = []
+            for field in settings['fields']:
+                c = {
+                    'name'          : field.get('name', ''),
+                    'field'         : field.get('field', ''),
+                    'type'          : field.get('type', 'input'),
+                    'description'   : field.get('description', ''),
+                    'validate_rx'   : field.get('validate_rx', ''),
+                    'validate_err'  : field.get('validate_err', ''),
+                    'old_value'     : 'POST',
+                }
+                self.fields.append(c)
+        else:
+            # Attempt to retrieve object fields from metadata
+            metadata = settings['page'].get_metadata()
+            md_o = metadata.details_by_object(settings['object'])
+            self.fields = md_o['column']
     
     def requirements (self):
     
     def requirements (self):
-        return { 'js_files'     : ['js/form.js', 'js/jquery.validate.js', ],
+        # Some should be included by default by manifold
+        return { 'js_files'     : ['js/manifold.js', 'js/spin.presets.js', 'js/spin.min.js', 'js/jquery.spin.js',
+                                   'js/form.js', 'js/jquery.validate.js', ],
                  'css_files'    : ['css/form.css'] 
                  }
                  'css_files'    : ['css/form.css'] 
                  }
+    def export_json_settings(self):
+        # We need initialization, even though we are not associated with a query
+        return True
 
     def template_env (self, request):
         env={}
         env.update(self.__dict__)
 
     def template_env (self, request):
         env={}
         env.update(self.__dict__)
-        #env['columns']=self.columns
         return env
 
     def template_file (self):
         return "form.html"
 
         return env
 
     def template_file (self):
         return "form.html"
 
-    def json_settings_list (self): return ['plugin_uuid']
-
-    def get_validation_js(self):
-        # XXX We need to avoid sending the same query twice !"
-        # somehow store something into the dom, to perform an update afterwards
-        # XXX This should be moved to a template
-        # XXX We also need some storage into the wizard to be displayed later
-        return "alert('validation'); return true;"
+    def json_settings_list (self): return ['plugin_uuid', 'object', 'fields']