mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-19 07:51:59 +02:00
Initial commit: OCA Technical packages (595 packages)
This commit is contained in:
commit
2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions
|
|
@ -0,0 +1,58 @@
|
|||
# Copyright 2017 ACSONE SA/NV
|
||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
|
||||
|
||||
from odoo import _, api, fields, models
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class IrExportsLine(models.Model):
|
||||
_inherit = "ir.exports.line"
|
||||
|
||||
target = fields.Char(
|
||||
help="The complete path to the field where you can specify a "
|
||||
"target on the step as field:target",
|
||||
)
|
||||
active = fields.Boolean(default=True)
|
||||
lang_id = fields.Many2one(
|
||||
comodel_name="res.lang",
|
||||
string="Language",
|
||||
help="If set, the language in which the field is exported",
|
||||
)
|
||||
resolver_id = fields.Many2one(
|
||||
comodel_name="ir.exports.resolver",
|
||||
string="Custom resolver",
|
||||
help="If set, will apply the resolver on the field value",
|
||||
)
|
||||
instance_method_name = fields.Char(
|
||||
string="Function",
|
||||
help="A method defined on the model that takes a record and a field_name",
|
||||
)
|
||||
|
||||
@api.constrains("resolver_id", "instance_method_name")
|
||||
def _check_function_resolver(self):
|
||||
for rec in self:
|
||||
if rec.resolver_id and rec.instance_method_name:
|
||||
msg = _("Either set a function or a resolver, not both.")
|
||||
raise ValidationError(msg)
|
||||
|
||||
@api.constrains("target", "name")
|
||||
def _check_target(self):
|
||||
for rec in self:
|
||||
if not rec.target:
|
||||
continue
|
||||
names = rec.name.split("/")
|
||||
names_with_target = rec.target.split("/")
|
||||
if len(names) != len(names_with_target):
|
||||
raise ValidationError(
|
||||
_("Name and Target must have the same hierarchy depth")
|
||||
)
|
||||
for name, name_with_target in zip(names, names_with_target):
|
||||
field_name = name_with_target.split(":")[0]
|
||||
if name != field_name:
|
||||
raise ValidationError(
|
||||
_(
|
||||
"The target must reference the same field as in "
|
||||
"name '%(name)s' not in '%(name_with_target)s'"
|
||||
)
|
||||
% dict(name=name, name_with_target=name_with_target)
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue