[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

@@ -22,11 +22,47 @@ class AgreementAppendix(models.Model):
agreement_id = fields.Many2one('agreement', string="Agreement",
ondelete="cascade")
active = fields.Boolean(
string="Active",
default=True,
string="Active", default=True,
help="If unchecked, it will allow you to hide this appendix 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
def _compute_dynamic_content(self):