[FIX] base_comment_template: Consider multi-company and partners
In a multi-company context, if you put a template with company_id set, this template is trying to be assigned to any document, no matter which company it belongs, as it runs in a sudo environment, or at least, you can have several companies seen at the same time. We add the company discriminant for avoiding this problem. Furthermore, the previous code was adding a domain where the right part may be `False` with the operator `in`, provoking an unexpected behavior in the search. This has been fixed stating directly the expected domain. TT42591pull/754/head
parent
8549c36827
commit
dea48a328a
|
@ -2,6 +2,7 @@
|
|||
# Copyright 2013-2014 Nicolas Bessi (Camptocamp SA)
|
||||
# Copyright 2020 NextERP Romania SRL
|
||||
# Copyright 2021 Tecnativa - Víctor Martínez
|
||||
# Copyright 2023 Tecnativa - Pedro M. Baeza
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
from odoo import api, fields, models
|
||||
from odoo.tools.safe_eval import safe_eval
|
||||
|
@ -31,14 +32,22 @@ class CommentTemplate(models.AbstractModel):
|
|||
def _compute_comment_template_ids(self):
|
||||
for record in self:
|
||||
partner = record[self._comment_template_partner_field_name]
|
||||
record.comment_template_ids = [(5,)]
|
||||
templates = self.env["base.comment.template"].search(
|
||||
[
|
||||
("id", "in", partner.base_comment_template_ids.ids),
|
||||
("model_ids.model", "=", self._name),
|
||||
domain = [
|
||||
"|",
|
||||
("partner_ids", "=", False),
|
||||
("partner_ids", "=", partner.id),
|
||||
("model_ids.model", "=", self._name),
|
||||
]
|
||||
if "company_id" in self._fields:
|
||||
domain += [
|
||||
"|",
|
||||
("company_id", "=", False),
|
||||
("company_id", "=", self.company_id.id),
|
||||
]
|
||||
)
|
||||
templates = self.env["base.comment.template"].search(domain)
|
||||
for template in templates:
|
||||
domain = safe_eval(template.domain)
|
||||
if not domain or record.filtered_domain(domain):
|
||||
record.comment_template_ids = [(4, template.id)]
|
||||
if not templates:
|
||||
record.comment_template_ids = False
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# Copyright 2020 NextERP Romania SRL
|
||||
# Copyright 2021 Tecnativa - Víctor Martínez
|
||||
# Copyright 2023 Tecnativa - Pedro M. Baeza
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
from odoo.tests import common
|
||||
|
||||
|
@ -7,9 +8,6 @@ from .fake_models import ResUsers, setup_test_model, teardown_test_model
|
|||
|
||||
|
||||
class TestCommentTemplate(common.SavepointCase):
|
||||
at_install = False
|
||||
post_install = True
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
|
@ -37,10 +35,6 @@ class TestCommentTemplate(common.SavepointCase):
|
|||
"company_id": cls.company.id,
|
||||
}
|
||||
)
|
||||
cls.user.partner_id.base_comment_template_ids = [
|
||||
(4, cls.before_template_id.id),
|
||||
(4, cls.after_template_id.id),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
|
|
Loading…
Reference in New Issue