Files
Nicolas Martinelli dd25aa46e6 [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>
2024-04-19 23:49:54 +00:00

20 lines
929 B
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, models
class ResUsers(models.Model):
_inherit = "res.users"
@api.model_create_multi
def create(self, vals_list):
""" Automatically subscribe employee users to default digest if activated """
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')
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_to_subscribe
return users