From ee4157a3968f5e9ba2ea113a7a77fe4d23934d74 Mon Sep 17 00:00:00 2001 From: Xavier-Do Date: Mon, 7 Mar 2022 07:36:17 +0000 Subject: [PATCH] [FIX] crm: consistent community and enterprise query count It looks like in enterprise, the value of has_group is already in cache This will lead to an additional query when checking mail.message creation access rights in community. This commit warmup the user _has_group ormcache to avoid an inconsistency between community and enterprise Stack of the additional query: ``` sql('SELECT 1 FROM res_groups_users_rel WHERE uid=%s AND gid IN\n ... (SELECT res_id FROM ir_model_data WHERE module=%s AND name=%s)') (SELECT 1 FROM res_groups_users_rel WHERE uid=29 AND gid IN (SELECT res_id FROM ir_model_data WHERE module='base' AND name='group_user')) execute (odoo/addons/base/models/res_users.py (self._cr.execute("""SELECT 1 FROM res_groups_users_rel WHERE uid=%s AND gid IN):847) _has_group (odoo/tools/cache.py (value = d[key] = self.method(*args, **kwargs)):90) lookup (called at ():2) _has_group (odoo/addons/base/models/res_users.py (return self.with_user(uid)._has_group(group_ext_id)):832) has_group (addons/mail/models/mail_message.py (if not self.env['res.users'].has_group('base.group_user'):):380) check_access_rule (odoo/models.py (records.check_access_rule('create')):4321) _create (odoo/models.py (records = self._create(data_list)):4087) create (odoo/api.py (return create(self, arg)):410) _model_create_multi (called at ():2) create (odoo/addons/base/models/ir_fields.py (recs = super().create(vals_list)):613) create (odoo/api.py (return create(self, arg)):410) _model_create_multi (called at ():2) create (addons/mail/models/mail_message.py (messages = super(Message, self).create(values_list)):599) create (odoo/api.py (return create(self, arg)):410) _model_create_multi (called at ():2) create (addons/mail/models/mail_thread.py (return self.env['mail.message'].create(create_values_list)):2132) _message_create (addons/mail/models/mail_thread.py (new_message = self._message_create(msg_values)):1874) message_post (addons/rating/models/mail_thread.py (message = super(MailThread, self).message_post(**kwargs)):14) message_post (addons/mail/wizard/mail_compose_message.py (ActiveModel.browse(res_id).message_post(**post_params)):321) _action_send_mail (addons/mail/models/mail_thread.py (return composer._action_send_mail(auto_commit=auto_commit)):1964) message_post_with_template (addons/mail/models/mail_thread.py (return record.message_post_with_template(False, **kwargs)):1929) _message_compose_with_view (addons/mail/models/mail_thread.py (self._message_compose_with_view(views_or_xmlid, **kwargs)):1933) message_post_with_view (addons/crm/models/crm_lead.py (opportunities_head.message_post_with_view():1336) _merge_opportunity (addons/crm/models/crm_team.py (merged = lead_duplicates._merge_opportunity(user_id=False, team_id=False, auto_unlink=False, max_length=0)):578) _allocate_leads_deduplicate (addons/crm/models/crm_team.py (assign_res = team._allocate_leads_deduplicate(candidate_lead, duplicates_cache=duplicates_lead_cache)):507) _allocate_leads (addons/crm/models/crm_team.py (teams_data = self._allocate_leads(work_days=work_days)):304) _action_assign_leads test_assign_perf_duplicates (odoo/tools/misc.py (return func(*args, **kwargs)):792) ``` task-2796579 Part-of: odoo/odoo#85525 --- addons/crm/tests/test_performances.py | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/crm/tests/test_performances.py b/addons/crm/tests/test_performances.py index 4b7ba29d856..dd4b58b8227 100644 --- a/addons/crm/tests/test_performances.py +++ b/addons/crm/tests/test_performances.py @@ -48,6 +48,7 @@ class TestLeadAssignPerf(TestLeadAssignCommon): leads.flush() with self.with_user('user_sales_manager'): + self.env['res.users'].has_group('base.group_user') # warmup the cache to avoid inconsistency between community an enterprise with self.assertQueryCount(user_sales_manager=1279): self.env['crm.team'].browse(self.sales_teams.ids)._action_assign_leads(work_days=2)