From 286427d3c4d02615126be32a3df231b4d605e080 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 9 Mar 2020 16:34:24 +0000 Subject: [PATCH] [IMP] event, website_event_track: make create of registration and track multi Purpose is to allow the batch create on those models that may be created in batch, notably through import. LINKS Task ID 2212297 Community PR odoo/odoo#47229 --- addons/event/models/event_registration.py | 12 ++++---- .../event_sale/models/event_registration.py | 30 ++++++++++--------- .../website_event_track/models/event_track.py | 21 ++++++------- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/addons/event/models/event_registration.py b/addons/event/models/event_registration.py index 361ac3ad416..c7b7886527d 100644 --- a/addons/event/models/event_registration.py +++ b/addons/event/models/event_registration.py @@ -106,13 +106,13 @@ class EventRegistration(models.Model): # CRUD # ------------------------------------------------------------ - @api.model - def create(self, vals): - registration = super(EventRegistration, self).create(vals) - if registration._check_auto_confirmation(): - registration.sudo().action_confirm() + @api.model_create_multi + def create(self, vals_list): + registrations = super(EventRegistration, self).create(vals_list) + if registrations._check_auto_confirmation(): + registrations.sudo().action_confirm() - return registration + return registrations def write(self, vals): ret = super(EventRegistration, self).write(vals) diff --git a/addons/event_sale/models/event_registration.py b/addons/event_sale/models/event_registration.py index f1dc4a315b0..e057739be10 100644 --- a/addons/event_sale/models/event_registration.py +++ b/addons/event_sale/models/event_registration.py @@ -22,20 +22,22 @@ class EventRegistration(models.Model): action['res_id'] = self.sale_order_id.id return action - @api.model - def create(self, vals): - if vals.get('sale_order_line_id'): - so_line_vals = self._synchronize_so_line_values( - self.env['sale.order.line'].browse(vals['sale_order_line_id']) - ) - vals.update(so_line_vals) - res = super(EventRegistration, self).create(vals) - if res.sale_order_id: - res.message_post_with_view( - 'mail.message_origin_link', - values={'self': res, 'origin': res.sale_order_id}, - subtype_id=self.env.ref('mail.mt_note').id) - return res + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get('sale_order_line_id'): + so_line_vals = self._synchronize_so_line_values( + self.env['sale.order.line'].browse(vals['sale_order_line_id']) + ) + vals.update(so_line_vals) + registrations = super(EventRegistration, self).create(vals) + for registration in registrations: + if registration.sale_order_id: + registration.message_post_with_view( + 'mail.message_origin_link', + values={'self': registration, 'origin': registration.sale_order_id}, + subtype_id=self.env.ref('mail.mt_note').id) + return registrations def write(self, vals): if vals.get('sale_order_line_id'): diff --git a/addons/website_event_track/models/event_track.py b/addons/website_event_track/models/event_track.py index 80b16d75e16..6a75af9b40a 100644 --- a/addons/website_event_track/models/event_track.py +++ b/addons/website_event_track/models/event_track.py @@ -105,18 +105,19 @@ class Track(models.Model): else: track.date_end = False - @api.model - def create(self, vals): - track = super(Track, self).create(vals) + @api.model_create_multi + def create(self, vals_list): + tracks = super(Track, self).create(vals_list) - track.event_id.message_post_with_view( - 'website_event_track.event_track_template_new', - values={'track': track}, - subject=track.name, - subtype_id=self.env.ref('website_event_track.mt_event_track').id, - ) + for track in tracks: + track.event_id.message_post_with_view( + 'website_event_track.event_track_template_new', + values={'track': track}, + subject=track.name, + subtype_id=self.env.ref('website_event_track.mt_event_track').id, + ) - return track + return tracks def write(self, vals): if 'stage_id' in vals and 'kanban_state' not in vals: