126 lines
5.7 KiB
Python
Executable File
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)
|