diff options
| author | Victor Feyens <vfe@odoo.com> | 2020-04-02 19:35:33 +0200 |
|---|---|---|
| committer | Victor Feyens <vfe@odoo.com> | 2020-04-27 12:00:45 +0200 |
| commit | e3c329b9bcd7327d36279c45326cae1aed3a11c0 (patch) | |
| tree | 764ad36f8690492e3ec958f77672e7d33cf78290 /addons/auth_signup | |
| parent | cf078da86e2f0e5dd6b02ccbe91b7be2062c7559 (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.py | 20 |
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): |
