[IMP] Add dynamic field editor

This commit is contained in:
Maxime Chambreuil
2019-01-08 18:04:26 -06:00
parent 0aa276a2e8
commit 976aabde1d
12 changed files with 387 additions and 153 deletions

View File

@@ -14,27 +14,54 @@ class AgreementSection(models.Model):
help="The title is displayed on the PDF."
"The name is not.")
sequence = fields.Integer(string="Sequence")
agreement_id = fields.Many2one(
'agreement',
string="Agreement",
ondelete="cascade"
)
clauses_ids = fields.One2many(
'agreement.clause',
'section_id',
string="Clauses"
)
agreement_id = fields.Many2one('agreement', string="Agreement",
ondelete="cascade")
clauses_ids = fields.One2many('agreement.clause', 'section_id',
string="Clauses")
content = fields.Html(string="Section Content")
dynamic_content = fields.Html(
compute="_compute_dynamic_content",
string="Dynamic Content",
help='compute dynamic Content')
active = fields.Boolean(
string="Active",
default=True,
help="If unchecked, it will allow you to hide the agreement without "
"removing it."
)
dynamic_content = fields.Html(compute="_compute_dynamic_content",
string="Dynamic Content",
help='compute dynamic Content')
active = fields.Boolean(string="Active", default=True,
help="""If unchecked, it will allow you to hide the
agreement without removing it.""")
# Dynamic field editor
field_id = fields.Many2one(
'ir.model.fields', string="Field",
help="""Select target field from the related document model. If it is a
relationship field you will be able to select a target field at the
destination of the relationship.""")
sub_object_id = fields.Many2one(
'ir.model', string="Sub-model",
help="""When a relationship field is selected as first field, this
field shows the document model the relationship goes to.""")
sub_model_object_field_id = fields.Many2one(
'ir.model.fields', string="Sub-field",
help="""When a relationship field is selected as first field, this
field lets you select the target field within the destination document
model (sub-model).""")
default_value = fields.Char(
string="Default Value",
help="Optional value to use if the target field is empty.")
copyvalue = fields.Char(
string="Placeholder Expression",
help="""Final placeholder expression, to be copy-pasted in the desired
template field.""")
@api.onchange('field_id')
def onchange_sub_object_id(self):
if self.field_id:
self.sub_object_id = self.env['ir.model'].search(
[('model', '=', self.field_id.relation)])[0]
@api.onchange('sub_model_object_field_id', 'default_value')
def onchange_copyvalue(self):
if self.sub_model_object_field_id or self.default_value:
self.copyvalue = "${object.%s.%s or %s}" % \
(self.field_id.name,
self.sub_model_object_field_id.name,
self.default_value or '\'\'')
# compute the dynamic content for mako expression
@api.multi