From 426ad621c9b1f5c86270418fb50427e1683c494f Mon Sep 17 00:00:00 2001 From: Ken Woychesko Date: Fri, 23 Jun 2023 09:03:28 -0400 Subject: [PATCH] [16.0][MIG] partner_event: Migration to version 16.0 Biggest change is that _onchange_partner_id was removed in v16 core code so we no longer super it here. Instead, we call the _synchronize_partner_values method, which was the main job of the old _onchange_partner_id. --- partner_event/__manifest__.py | 3 +- partner_event/models/event_registration.py | 27 +++++++----- partner_event/readme/CONTRIBUTORS.rst | 1 + partner_event/readme/DESCRIPTION.rst | 1 + partner_event/static/description/index.html | 1 + .../tests/test_event_registration.py | 10 ++--- .../wizard/res_partner_register_event.py | 41 +++++++------------ .../res_partner_register_event_view.xml | 15 ++----- 8 files changed, 46 insertions(+), 53 deletions(-) diff --git a/partner_event/__manifest__.py b/partner_event/__manifest__.py index ad6377189..312807ddb 100644 --- a/partner_event/__manifest__.py +++ b/partner_event/__manifest__.py @@ -5,11 +5,12 @@ # Copyright 2017 Tecnativa S.L. - David Vidal # Copyright 2018 Jupical Technologies Pvt. Ltd. - Anil Kesariya # Copyright 2020 Tecnativa S.L. - Víctor Martínez +# Copyright 2023 Tecnativa S.L. - Carolina Fernandez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { "name": "Link partner to events", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "category": "Marketing", "author": "Tecnativa," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/event", diff --git a/partner_event/models/event_registration.py b/partner_event/models/event_registration.py index c830e2997..9cfb81d94 100644 --- a/partner_event/models/event_registration.py +++ b/partner_event/models/event_registration.py @@ -1,10 +1,11 @@ -# Copyright 2014 Tecnativa S.L. - Pedro M. Baeza -# Copyright 2015 Tecnativa S.L. - Javier Iniesta -# Copyright 2016 Tecnativa S.L. - Antonio Espinosa -# Copyright 2016 Tecnativa S.L. - Vicent Cubells -# Copyright 2020 Tecnativa S.L. - Víctor Martínez +# Copyright 2015 Tecnativa - Javier Iniesta +# Copyright 2016 Tecnativa - Antonio Espinosa +# Copyright 2016 Tecnativa - Vicent Cubells +# Copyright 2018 Jupical Technologies Pvt. Ltd. - Anil Kesariya +# Copyright 2020 Tecnativa - Víctor Martínez +# Copyright 2014-2023 Tecnativa - Pedro M. Baeza +# Copyright 2023 Tecnativa - Carolina Fernandez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - from odoo import api, fields, models @@ -17,6 +18,7 @@ class EventRegistration(models.Model): string="Attendee Partner", ondelete="restrict", copy=False, + index=True, ) def _prepare_partner(self, vals): @@ -64,7 +66,12 @@ def _onchange_partner_id(self): get_attendee_partner_address = { "get_attendee_partner_address": self.attendee_partner_id, } - return super( - EventRegistration, self.with_context(**get_attendee_partner_address) - )._onchange_partner_id() - return super(EventRegistration, self)._onchange_partner_id() + self = self.with_context(**get_attendee_partner_address) + for registration in self: + if registration.partner_id: + registration.update( + registration._synchronize_partner_values( + registration.partner_id + ) + ) + return {} diff --git a/partner_event/readme/CONTRIBUTORS.rst b/partner_event/readme/CONTRIBUTORS.rst index 736ece26e..91f0d5fc7 100644 --- a/partner_event/readme/CONTRIBUTORS.rst +++ b/partner_event/readme/CONTRIBUTORS.rst @@ -8,6 +8,7 @@ * Rafael Blasco * Víctor Martínez * Stefan Ungureanu + * Carolina Fernandez * `Antiun `__: diff --git a/partner_event/readme/DESCRIPTION.rst b/partner_event/readme/DESCRIPTION.rst index 9c2e259c5..2360047bb 100644 --- a/partner_event/readme/DESCRIPTION.rst +++ b/partner_event/readme/DESCRIPTION.rst @@ -10,3 +10,4 @@ It also includes: * Action in partner tree view 'More' button, to register several partners to an event * Restricts partner deletion when event attendees are linked to it. +* Onchange for partner_id removed in v16 core in Event Registration- including functionality here diff --git a/partner_event/static/description/index.html b/partner_event/static/description/index.html index 4ad43f5db..ecad89690 100644 --- a/partner_event/static/description/index.html +++ b/partner_event/static/description/index.html @@ -431,6 +431,7 @@

Contributors

  • Rafael Blasco
  • Víctor Martínez
  • Stefan Ungureanu
  • +
  • Carolina Fernandez/li>
  • Antiun:
      diff --git a/partner_event/tests/test_event_registration.py b/partner_event/tests/test_event_registration.py index 0eccd6f4d..0b65b07f8 100644 --- a/partner_event/tests/test_event_registration.py +++ b/partner_event/tests/test_event_registration.py @@ -63,12 +63,12 @@ def test_count_registrations(self): event_1 = self.event_0.copy() self.assertEqual(self.partner_01.registration_count, 0) self.registration_01.state = "open" - self.partner_01.invalidate_cache() + self.partner_01.invalidate_recordset() self.assertEqual(self.partner_01.registration_count, 1) self.registration_02.state = "done" self.registration_02.attendee_partner_id = self.partner_01 self.registration_02.event_id = event_1 - self.partner_01.invalidate_cache() + self.partner_01.invalidate_recordset() self.assertEqual(self.partner_01.registration_count, 2) def test_button_register(self): @@ -81,16 +81,16 @@ def test_data_update(self): event_2 = self.event_0.copy() self.yesterday = datetime.now() - timedelta(days=1) self.tomorrow = datetime.now() + timedelta(days=1) - self.last_moth = datetime.now() - timedelta(days=30) + self.last_month = datetime.now() - timedelta(days=30) # Set an old event - event_2.write({"date_begin": self.last_moth}) + event_2.write({"date_begin": self.last_month}) event_2.write({"date_end": self.yesterday}) self.registration_02.event_id = event_2 self.registration_02.attendee_partner_id = self.partner_01 # Update partner for an old event self.partner_01.write({"email": "new@test.com"}) self.assertNotEqual(event_2.registration_ids.email, "new@test.com") - # Update partner for an current event + # Update partner for a current event event_2.write({"date_end": self.tomorrow}) self.partner_01.write({"email": "new@test.com"}) self.assertEqual(event_2.registration_ids.email, "new@test.com") diff --git a/partner_event/wizard/res_partner_register_event.py b/partner_event/wizard/res_partner_register_event.py index eb5c6bb8d..951513f23 100644 --- a/partner_event/wizard/res_partner_register_event.py +++ b/partner_event/wizard/res_partner_register_event.py @@ -1,9 +1,9 @@ -# Copyright 2014 Tecnativa S.L. - Pedro M. Baeza -# Copyright 2015 Tecnativa S.L. - Javier Iniesta -# Copyright 2016 Tecnativa S.L. - Antonio Espinosa -# Copyright 2016 Tecnativa S.L. - Vicent Cubells +# Copyright 2015 Tecnativa - Javier Iniesta +# Copyright 2016 Tecnativa - Antonio Espinosa +# Copyright 2016 Tecnativa - Vicent Cubells # Copyright 2018 Jupical Technologies Pvt. Ltd. - Anil Kesariya -# Copyright 2020 Tecnativa S.L. - Víctor Martínez +# Copyright 2020 Tecnativa - Víctor Martínez +# Copyright 2014-2023 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import fields, models @@ -11,13 +11,11 @@ class ResPartnerRegisterEvent(models.TransientModel): _name = "res.partner.register.event" - _description = "Register partner for event" event = fields.Many2one( comodel_name="event.event", required=True, ondelete="cascade" ) - errors = fields.Text(readonly=True) def _prepare_registration(self, partner): return { @@ -27,28 +25,19 @@ def _prepare_registration(self, partner): "name": partner.name, "email": partner.email, "phone": partner.phone, - "date_open": fields.Datetime.now(), } def button_register(self): - registration_obj = self.env["event.registration"] - errors = [] + vals_list = [] + Registration = self.env["event.registration"] for partner in self.env["res.partner"].browse( self.env.context.get("active_ids", []) ): - try: - with self.env.cr.savepoint(): - registration_obj.create(self._prepare_registration(partner)) - except Exception: - errors.append(partner.name) - if errors: - self.errors = "\n".join(errors) - data_obj = self.env.ref("partner_event." "res_partner_register_event_view") - return { - "type": "ir.actions.act_window", - "res_model": self._name, - "view_mode": "form", - "view_id": [data_obj.id], - "res_id": self.id, - "target": "new", - } + if not Registration.search( + [ + ("event_id", "=", self.event.id), + ("attendee_partner_id", "=", partner.id), + ] + ): + vals_list.append(self._prepare_registration(partner)) + self.env["event.registration"].create(vals_list) diff --git a/partner_event/wizard/res_partner_register_event_view.xml b/partner_event/wizard/res_partner_register_event_view.xml index d3a54c514..c1846c61f 100644 --- a/partner_event/wizard/res_partner_register_event_view.xml +++ b/partner_event/wizard/res_partner_register_event_view.xml @@ -1,5 +1,6 @@ - @@ -8,22 +9,14 @@ res.partner.register.event
      - + - - - -