From dd93417433c1b516fbdfb302d64da27c0ecd4b76 Mon Sep 17 00:00:00 2001 From: emiliesoutiras Date: Wed, 21 Jan 2026 14:39:47 +0100 Subject: [PATCH] [IMP] Enable overloading of res.brand.mixin views --- brand/models/res_brand_mixin.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/brand/models/res_brand_mixin.py b/brand/models/res_brand_mixin.py index 4c4c0bcc1..45c35eed3 100644 --- a/brand/models/res_brand_mixin.py +++ b/brand/models/res_brand_mixin.py @@ -4,6 +4,7 @@ from odoo import _, api, fields, models from odoo.exceptions import ValidationError +from odoo.osv import expression from odoo.addons.base.models import ir_ui_view @@ -57,9 +58,25 @@ def setup_modifiers(self, node, field=None): attributes = ["invisible", "readonly", "required"] if field is not None: ir_ui_view.transfer_field_to_modifiers(field, modifiers, attributes) + if self.is_brand_id_field(field) and self._get_brand_id_readonly_domain(): + if isinstance(modifiers["readonly"], list): + modifiers["readonly"] = expression.OR( + [ + modifiers["readonly"], + self._get_brand_id_readonly_domain(), + ] + ) + else: + modifiers["readonly"] = self._get_brand_id_readonly_domain() ir_ui_view.transfer_node_to_modifiers(node, modifiers) ir_ui_view.transfer_modifiers_to_node(modifiers, node) + def is_brand_id_field(self, field): + return field == self.fields_get(["brand_id"])["brand_id"] + + def _get_brand_id_readonly_domain(self): + return False + @api.model def get_view(self, view_id=None, view_type="form", **options): """set visibility and requirement rules"""