- Fixed the module name and category in manifest - Fixed website_form_blacklisted being ignored - Unauthorized readonly and magic fields - Reset the form on successfull submit - Added missing date field - Added date and datetime validation
53 lines
2.2 KiB
Python
53 lines
2.2 KiB
Python
from openerp import tools
|
|
from openerp import models, fields, api
|
|
|
|
MAGIC_FIELDS = ["id", "create_uid", "create_date", "write_uid", "write_date", "__last_update"]
|
|
|
|
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()
|
|
|
|
for elem in self.env['ir.model.fields'].search([('model_id', 'in', self.all_inherited_model_ids())]):
|
|
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
|
|
|
|
# Remove readonly and magic fields
|
|
for field in fields_get.keys():
|
|
if fields_get[field]['readonly'] or field in MAGIC_FIELDS:
|
|
del fields_get[field]
|
|
|
|
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')
|