mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-20 04:52:02 +02:00
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
# Copyright 2024 Tecnativa - Víctor Martínez
|
|
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
|
|
|
|
from odoo import _, api, fields, models
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class DmsAccessGroups(models.Model):
|
|
_inherit = "dms.access.group"
|
|
|
|
dms_field_ref = fields.Reference(
|
|
selection="_selection_reference_value",
|
|
string="DMS field reference",
|
|
)
|
|
company_id = fields.Many2one(
|
|
compute="_compute_company_id",
|
|
comodel_name="res.company",
|
|
string="Company",
|
|
store=True,
|
|
)
|
|
|
|
@api.model
|
|
def _selection_reference_value(self):
|
|
models = (
|
|
self.env["ir.model"]
|
|
.sudo()
|
|
.search([("transient", "=", False)], order="name asc")
|
|
)
|
|
return [(model.model, model.name) for model in models]
|
|
|
|
@api.depends("dms_field_ref")
|
|
def _compute_company_id(self):
|
|
self.company_id = False
|
|
for item in self.filtered("dms_field_ref"):
|
|
item.company_id = (
|
|
item.dms_field_ref.company_id
|
|
if "company_id" in item.dms_field_ref._fields
|
|
else False
|
|
)
|
|
|
|
def _get_item_from_dms_field_ref(self, record):
|
|
return self.env["dms.access.group"].search(
|
|
[("dms_field_ref", "=", "%s,%s" % (record._name, record.id))]
|
|
)
|
|
|
|
@api.constrains("dms_field_ref")
|
|
def _check_dms_field_ref(self):
|
|
for item in self.filtered("dms_field_ref"):
|
|
dms_field_ref = "%s,%s" % (item.dms_field_ref._name, item.dms_field_ref.id)
|
|
if self.search(
|
|
[("dms_field_ref", "=", dms_field_ref), ("id", "!=", item.id)]
|
|
):
|
|
raise UserError(
|
|
_("There is already an access group created for this record.")
|
|
)
|