Files
tocmo0nlord adbe430761
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled
Initial commit: Odoo 18.0-20251222 extra-addons
2026-03-13 20:43:25 +00:00

126 lines
5.7 KiB
Python
Executable File

# Copyright 2016-2020 Tecnativa - Pedro M. Baeza
# Copyright 2021 Tecnativa - Víctor Martínez
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
from odoo.tools import mute_logger
from odoo.addons.base.tests.common import BaseCommon
class TestCommon(BaseCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.team = cls.env["crm.team"].create({"name": "Test channel"})
cls.team2 = cls.env["crm.team"].create({"name": "Test channel 2"})
cls.user = cls.env["res.users"].create(
{
"login": "sales_team_security",
"name": "Test sales_team_security user",
"groups_id": [(4, cls.env.ref("sales_team.group_sale_salesman").id)],
}
)
cls.crm_team_member = cls.env["crm.team.member"].create(
{
"user_id": cls.user.id,
"crm_team_id": cls.team.id,
}
)
cls.partner = cls.env["res.partner"].create({"name": "Test partner"})
cls.partner_child_1 = cls.env["res.partner"].create(
{"name": "Child 1", "parent_id": cls.partner.id}
)
cls.partner_child_2 = cls.env["res.partner"].create(
{"name": "Child 2", "parent_id": cls.partner.id, "type": "invoice"}
)
cls.partner2 = cls.env["res.partner"].create(
{"name": "Test partner 2", "user_id": cls.user.id}
)
cls.user2 = cls.env["res.users"].create(
{
"login": "sales_team_security2",
"name": "Test sales_team_security user 2",
"groups_id": [(4, cls.env.ref("sales_team.group_sale_salesman").id)],
}
)
cls.crm_team_member2 = cls.env["crm.team.member"].create(
{
"user_id": cls.user2.id,
"crm_team_id": cls.team.id,
}
)
cls.check_permission_subscribe = False
def _check_permission(self, salesman, team, expected):
vals = {"user_id": salesman.id if salesman else salesman}
# Check if the record has a team_id field
# This is needed for the test to work with different models
# such as sales_team_security_crm and sales_team_security_sale modules.
if "team_id" in self.record._fields:
vals["team_id"] = team.id if team else team
self.record.write(vals)
domain = [("id", "=", self.record.id)]
if (
self.check_permission_subscribe
): # Force unsubscription for not interfering with real test
self.record.message_subscribe(partner_ids=self.user.partner_id.ids)
else:
self.record.message_unsubscribe(partner_ids=self.user.partner_id.ids)
obj = self.env[self.record._name].with_user(self.user)
self.assertEqual(bool(obj.search(domain)), expected)
@mute_logger("odoo.models.unlink")
def _check_whole_permission_set(self, extra_checks=True):
is_res_partner = self.record._name == "res.partner"
self._check_permission(False, False, True)
self._check_permission(self.user, False, True)
self._check_permission(self.user2, False, False)
self._check_permission(False, self.team, True)
self._check_permission(self.user, self.team, True)
self._check_permission(self.user, self.team2, True)
self._check_permission(self.user2, self.team2, False)
self._check_permission(self.user2, self.team, False)
# Add to group "Team manager"
self.user.groups_id = [
(4, self.env.ref("sales_team_security.group_sale_team_manager").id)
]
self._check_permission(False, False, True)
self._check_permission(self.user, False, True)
if not is_res_partner:
self._check_permission(self.user2, False, True)
self._check_permission(False, self.team, True)
self._check_permission(self.user, self.team, True)
if is_res_partner:
self.check_permission_subscribe = True
self._check_permission(self.user, self.team2, True)
self.check_permission_subscribe = False
else:
self._check_permission(self.user, self.team2, True)
self._check_permission(self.user2, self.team2, False)
if not is_res_partner:
self._check_permission(self.user2, self.team, True)
# Add to group "See all leads"
self.user.groups_id = [
(4, self.env.ref("sales_team.group_sale_salesman_all_leads").id)
]
self._check_permission(False, False, True)
self._check_permission(self.user, False, True)
self._check_permission(self.user2, False, True)
self._check_permission(False, self.team, True)
self._check_permission(False, self.team2, True)
self._check_permission(self.user, self.team, True)
self._check_permission(self.user, self.team2, True)
self._check_permission(self.user2, self.team2, True)
self._check_permission(self.user2, self.team, True)
# Regular internal user
if extra_checks and is_res_partner:
self.user.groups_id = [(6, 0, [self.env.ref("base.group_user").id])]
self._check_permission(False, False, True)
self._check_permission(self.user, False, True)
self._check_permission(self.user2, False, True)
self._check_permission(False, self.team, True)
self._check_permission(False, self.team2, True)
self._check_permission(self.user, self.team, True)
self._check_permission(self.user, self.team2, True)
self._check_permission(self.user2, self.team2, True)
self._check_permission(self.user2, self.team, True)