summaryrefslogtreecommitdiff
path: root/addons/website_form/models/models.py
diff options
context:
space:
mode:
authorDavid Monjoie <dmo@odoo.com>2015-08-25 21:50:31 +0200
committerDavid Monjoie <dmo@odoo.com>2015-08-26 16:01:19 +0200
commita77f5cf42faa75a2dd3931d83ad8ea86648248c0 (patch)
tree29590b9351bf73ac573928be7f0dbaa5ea8505a8 /addons/website_form/models/models.py
parent57c4787d09eacc548140d7a552a76264eae21a55 (diff)
[ADD] website_form: generic form controller
Contains a new ajax post function that comes from mdo's original code and that I was not able to get rid of.
Diffstat (limited to 'addons/website_form/models/models.py')
-rw-r--r--addons/website_form/models/models.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/addons/website_form/models/models.py b/addons/website_form/models/models.py
new file mode 100644
index 00000000000..8fdc5e4bf9a
--- /dev/null
+++ b/addons/website_form/models/models.py
@@ -0,0 +1,47 @@
+from openerp import tools
+from openerp import models, fields, api
+
+
+class website_form_config(models.Model):
+ _inherit = 'website'
+ website_form_enable_metadata = fields.Boolean('Write metadata',help="Enable writing metadata on form submit.")
+
+
+class website_form_model(models.Model):
+ _name = 'ir.model'
+ _inherit = 'ir.model'
+
+ website_form_access = fields.Boolean('Allowed to use in forms', help='Enable the form builder feature for this model.')
+ website_form_default_field_id = fields.Many2one('ir.model.fields', 'Field for custom form data', domain="[('model', '=', model), ('ttype', '=', 'text')]", help="Specify the field wich will contain meta and custom form fields datas.")
+ website_form_label = fields.Char("Label for form action", help="Form action label. Ex: crm.lead could be 'Send an e-mail' and project.issue could be 'Create an Issue'.")
+
+
+ def all_inherited_model_ids(self):
+ return [self.id] + [m.all_inherited_model_ids() for m in self.inherited_model_ids]
+
+ @api.multi
+ def get_authorized_fields(self):
+ model = self.env[self.model]
+ fields_get = model.fields_get()
+ domain = [('model_id', 'in', self.all_inherited_model_ids()), ('website_form_blacklisted', '=', False)]
+
+ for elem in self.env['ir.model.fields'].search(domain):
+ if elem.website_form_blacklisted:
+ fields_get.pop(elem.name, None)
+ for key, val in model._inherits.iteritems():
+ fields_get.pop(val,None)
+
+ # Unrequire fields with default values
+ default_values = model.default_get(fields_get.keys())
+ for field in [f for f in fields_get if f in default_values]:
+ fields_get[field]['required'] = False
+
+ return fields_get
+
+
+class website_form_model_fields(models.Model):
+ """ fields configuration for form builder """
+ _name = 'ir.model.fields'
+ _inherit = 'ir.model.fields'
+
+ website_form_blacklisted = fields.Boolean('Blacklisted in web forms', help='Blacklist this field for web forms')