summaryrefslogtreecommitdiff
path: root/addons/auth_signup
diff options
context:
space:
mode:
authorVictor Feyens <vfe@odoo.com>2020-04-02 19:35:33 +0200
committerVictor Feyens <vfe@odoo.com>2020-04-27 12:00:45 +0200
commite3c329b9bcd7327d36279c45326cae1aed3a11c0 (patch)
tree764ad36f8690492e3ec958f77672e7d33cf78290 /addons/auth_signup
parentcf078da86e2f0e5dd6b02ccbe91b7be2062c7559 (diff)
[IMP] *: create users and partners in batch
The main classes of partners and users support batch creation, but the majority of their overrides doesn't support creation in batch. Adapting those overrides to support records creation in batch shows great performance gains: * On `res_partner` : 2 to 3 times faster * On `res_users`, with the inherited `res_partner` created in batch: up to 10 times faster. Tests done with 500 to 4k records: * `res_partner` with only a name provided * `res_users` with a name and login X-original-commit: 9c3c5f161580039c1fe50f68acac808c18817997
Diffstat (limited to 'addons/auth_signup')
-rw-r--r--addons/auth_signup/models/res_users.py20
1 files changed, 11 insertions, 9 deletions
diff --git a/addons/auth_signup/models/res_users.py b/addons/auth_signup/models/res_users.py
index dc1a471421a..c600d969e9d 100644
--- a/addons/auth_signup/models/res_users.py
+++ b/addons/auth_signup/models/res_users.py
@@ -233,16 +233,18 @@ class ResUsers(models.Model):
inactive_users.with_context(create_user=True).action_reset_password()
return res
- @api.model
- def create(self, values):
+ @api.model_create_multi
+ def create(self, vals_list):
# overridden to automatically invite user to sign up
- user = super(ResUsers, self).create(values)
- if user.email and not self.env.context.get('no_reset_password'):
- try:
- user.with_context(create_user=True).action_reset_password()
- except MailDeliveryException:
- user.partner_id.with_context(create_user=True).signup_cancel()
- return user
+ users = super(ResUsers, self).create(vals_list)
+ if not self.env.context.get('no_reset_password'):
+ users_with_email = users.filtered('email')
+ if users_with_email:
+ try:
+ users_with_email.with_context(create_user=True).action_reset_password()
+ except MailDeliveryException:
+ users_with_email.partner_id.with_context(create_user=True).signup_cancel()
+ return users
@api.returns('self', lambda value: value.id)
def copy(self, default=None):