diff options
| author | Victor Feyens <vfe@odoo.com> | 2020-04-03 14:28:17 +0200 |
|---|---|---|
| committer | Victor Feyens <vfe@odoo.com> | 2020-04-27 12:00:45 +0200 |
| commit | 0279cbc4a79162ea837bf14db73e12b38cd0aca9 (patch) | |
| tree | e26a184fefb35e4a295bd45532efbc258b358b27 | |
| parent | 46d267c758c313c2b039d81d0c5f1d3d4741c171 (diff) | |
[IMP] base: compute users `share` in batch.
Instead of triggering one has_group by user (one sql query/user if not already ormcached),
and potentially filling the `has_group` cache with new users data (we don't know if and when this data
will be used anyway), compute this field from the groups information already in cache.
X-original-commit: d771d7e9c8503543d29fdbf2ab961c2a32cc3bac
| -rw-r--r-- | addons/digest/models/res_users.py | 3 | ||||
| -rw-r--r-- | odoo/addons/base/models/res_users.py | 6 |
2 files changed, 5 insertions, 4 deletions
diff --git a/addons/digest/models/res_users.py b/addons/digest/models/res_users.py index 0f006b08dc7..432e140df33 100644 --- a/addons/digest/models/res_users.py +++ b/addons/digest/models/res_users.py @@ -14,6 +14,5 @@ class ResUsers(models.Model): default_digest_id = self.env['ir.config_parameter'].sudo().get_param('digest.default_digest_id') if default_digest_emails and default_digest_id: digest = self.env['digest.digest'].sudo().browse(int(default_digest_id)) - user_group_id = self.env['ir.model.data'].xmlid_to_res_id('base.group_user') - digest.user_ids |= users.filtered_domain([('groups_id', 'in', [user_group_id])]) + digest.user_ids |= users.filtered_domain([('share', '=', False)]) return users diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index e42376c8ba5..4d34c0a027d 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -357,8 +357,10 @@ class Users(models.Model): @api.depends('groups_id') def _compute_share(self): - for user in self: - user.share = not user.has_group('base.group_user') + user_group_id = self.env['ir.model.data'].xmlid_to_res_id('base.group_user') + internal_users = self.filtered_domain([('groups_id', 'in', [user_group_id])]) + internal_users.share = False + (self - internal_users).share = True def _compute_companies_count(self): self.companies_count = self.env['res.company'].sudo().search_count([]) |
