From dd25aa46e69ac5831a90b9106cc3a1663d464da3 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Wed, 17 Apr 2024 11:34:02 +0200 Subject: [PATCH] [FIX] digest: do not write on default digest if not necessary When a portal user is created (e.g. through the `auth_signup` module), an unnecessary write is done on the `write_date` of the default digest. This `write` is unnecessary since a portal user is never subscribed to the default digest. In case of a high signup frequency, it can cause concurrent transaction errors. We avoid writing if no internal user is being created. closes odoo/odoo#162563 X-original-commit: bbc427e837b08187f351febfde4339262e660944 Signed-off-by: Nicolas Martinelli (nim) --- addons/digest/models/res_users.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/digest/models/res_users.py b/addons/digest/models/res_users.py index 397d672e60e..44884554548 100644 --- a/addons/digest/models/res_users.py +++ b/addons/digest/models/res_users.py @@ -12,7 +12,8 @@ class ResUsers(models.Model): users = super(ResUsers, self).create(vals_list) default_digest_emails = self.env['ir.config_parameter'].sudo().get_param('digest.default_digest_emails') default_digest_id = self.env['ir.config_parameter'].sudo().get_param('digest.default_digest_id') - if default_digest_emails and default_digest_id: + users_to_subscribe = users.filtered_domain([('share', '=', False)]) + if default_digest_emails and default_digest_id and users_to_subscribe: digest = self.env['digest.digest'].sudo().browse(int(default_digest_id)).exists() - digest.user_ids |= users.filtered_domain([('share', '=', False)]) + digest.user_ids |= users_to_subscribe return users