diff options
| author | Victor Feyens <vfe@odoo.com> | 2020-02-20 10:04:18 +0000 |
|---|---|---|
| committer | Victor Feyens <vfe@odoo.com> | 2020-02-20 14:51:13 +0000 |
| commit | f823d1b8475b2aeb1eac93b0222c0a27e79c4fb5 (patch) | |
| tree | e4b204a36694e98bf56e76540ec574694324532f /addons/sales_team | |
| parent | 774d43c49f30e13e64b4bacfe735cc64c5821686 (diff) | |
[IMP] sales_team: _get_default_team_id performance.
Avoid using member_ids in the search domain as it does another database
query for each call. Use the information already in cache instead.
Diffstat (limited to 'addons/sales_team')
| -rw-r--r-- | addons/sales_team/models/crm_team.py | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/addons/sales_team/models/crm_team.py b/addons/sales_team/models/crm_team.py index 229878d5365..9c3c0ef349b 100644 --- a/addons/sales_team/models/crm_team.py +++ b/addons/sales_team/models/crm_team.py @@ -20,22 +20,17 @@ class CrmTeam(models.Model): _order = "sequence" _check_company_auto = True - @api.model - @api.returns('self', lambda value: value.id if value else False) def _get_default_team_id(self, user_id=None, domain=None): - if not user_id: - user_id = self.env.uid - team_id = self.env['crm.team'].search([ - '|', ('user_id', '=', user_id), ('member_ids', '=', user_id), - '|', ('company_id', '=', False), ('company_id', '=', self.env.company.id) + user_id = user_id or self.env.uid + user_salesteam_id = self.env['res.users'].browse(user_id).sale_team_id.id + # Avoid searching on member_ids (+1 query) when we may have the user salesteam already in cache. + team = self.env['crm.team'].search([ + ('company_id', 'in', [False, self.env.company.id]), + '|', ('user_id', '=', user_id), ('id', '=', user_salesteam_id), ], limit=1) - if not team_id and 'default_team_id' in self.env.context: - team_id = self.env['crm.team'].browse(self.env.context.get('default_team_id')) - if not team_id: - team_domain = domain or [] - default_team_id = self.env['crm.team'].search(team_domain, limit=1) - return default_team_id or self.env['crm.team'] - return team_id + if not team and 'default_team_id' in self.env.context: + team = self.env['crm.team'].browse(self.env.context.get('default_team_id')) + return team or self.env['crm.team'].search(domain or [], limit=1) def _get_default_favorite_user_ids(self): return [(6, 0, [self.env.uid])] |
