[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) <nim@odoo.com>
This commit is contained in:
Nicolas Martinelli
2024-04-19 23:49:54 +00:00
parent 2d323aa80e
commit dd25aa46e6
+3 -2
View File
@@ -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