From 476a53bbf0c28a97caabff4ac2950df3132dd743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20Laukavi=C4=8Dius?= Date: Sun, 12 May 2019 18:16:20 +0000 Subject: [PATCH] [FIX] sales_team: ignore inactive team When using `sales_team.team_sales_department` as fall back default team, last condition that checks if such team can be default was incorrect, because `active` value check was mixed with lead type check. In other words: True or False and False => True But intention is: (True or False) and False => False opw 1997715 closes odoo/odoo#33316 Signed-off-by: Damien Bouvy (dbo) --- addons/sales_team/models/crm_team.py | 2 +- addons/sales_team/tests/__init__.py | 1 + addons/sales_team/tests/test_default_team.py | 48 ++++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 addons/sales_team/tests/__init__.py create mode 100644 addons/sales_team/tests/test_default_team.py diff --git a/addons/sales_team/models/crm_team.py b/addons/sales_team/models/crm_team.py index 476f8a9e991..f07439cb4cf 100644 --- a/addons/sales_team/models/crm_team.py +++ b/addons/sales_team/models/crm_team.py @@ -38,7 +38,7 @@ class CrmTeam(models.Model): default_team_id.check_access_rule('read') except AccessError: return self.env['crm.team'] - if self.env.context.get('default_type') != 'lead' or default_team_id.use_leads and default_team_id.active: + if (self.env.context.get('default_type') != 'lead' or default_team_id.use_leads) and default_team_id.active: team_id = default_team_id return team_id diff --git a/addons/sales_team/tests/__init__.py b/addons/sales_team/tests/__init__.py new file mode 100644 index 00000000000..7bb8a11fc5e --- /dev/null +++ b/addons/sales_team/tests/__init__.py @@ -0,0 +1 @@ +from . import test_default_team diff --git a/addons/sales_team/tests/test_default_team.py b/addons/sales_team/tests/test_default_team.py new file mode 100644 index 00000000000..9905272b3d9 --- /dev/null +++ b/addons/sales_team/tests/test_default_team.py @@ -0,0 +1,48 @@ +from odoo.tests import common + + +class TestDefaultTeam(common.SavepointCase): + """Tests to check if correct default team is found.""" + + @classmethod + def setUpClass(cls): + """Set up data for default team tests.""" + super(TestDefaultTeam, cls).setUpClass() + cls.CrmTeam = cls.env['crm.team'] + ResUsers = cls.env['res.users'].with_context( + {'no_reset_password': True}) + group_sale_manager = cls.env.ref('sales_team.group_sale_manager') + cls.user = ResUsers.create({ + 'name': 'Team User', + 'login': 'sales_team_user', + 'email': 'sales.team.user@example.com', + 'groups_id': [(6, 0, [group_sale_manager.id])] + }) + cls.team_1 = cls.env['crm.team'].create({ + 'name': 'Test Team', + 'member_ids': [(4, cls.user.id)], + 'company_id': False + }) + # Europe Team (fall back team) + cls.team_2 = cls.env.ref('sales_team.team_sales_department') + + def test_01_user_team(self): + """Get default team, when user belongs to one.""" + team = self.CrmTeam.sudo(self.user)._get_default_team_id() + self.assertEqual(team, self.team_1) + + def test_02_fallback_team(self): + """Get default team when user does not belong to any team. + + Case 1: fall back default team (from XML ref) is active. + Case 2: fall back default team is not active. + """ + # Clear users from team. + self.team_1.member_ids = [(5,)] + # Case 1. + team = self.CrmTeam.sudo(self.user)._get_default_team_id() + self.assertEqual(team, self.team_2) + # Case 2. + self.team_2.active = False + team = self.CrmTeam.sudo(self.user)._get_default_team_id() + self.assertEqual(team, self.CrmTeam)