diff --git a/partner_communication_switzerland/controllers/zoom_registration.py b/partner_communication_switzerland/controllers/zoom_registration.py index e37640422..245080613 100644 --- a/partner_communication_switzerland/controllers/zoom_registration.py +++ b/partner_communication_switzerland/controllers/zoom_registration.py @@ -37,15 +37,12 @@ def zoom_registration(self, session=None, **kwargs): session = request.env["res.partner.zoom.session"].get_next_session(start) if not session.website_published: raise Unauthorized() - participant = request.env["res.partner.zoom.attendee"] + partner = request.env["res.partner"] if request.env.user and request.env.user != request.env.ref("base.public_user"): partner = request.env.user.partner_id kwargs["partner_id"] = partner.id - participant = session.participant_ids.filtered( - lambda p: p.partner_id == partner - ) kwargs["zoom_session_id"] = session.id return request.render( "partner_communication_switzerland.zoom_registration_template", - {"session": session, "main_object": participant}, + {"session": session, "partner": partner}, ) diff --git a/partner_communication_switzerland/data/form_data.xml b/partner_communication_switzerland/data/form_data.xml index f6c73efda..ebd4c6450 100644 --- a/partner_communication_switzerland/data/form_data.xml +++ b/partner_communication_switzerland/data/form_data.xml @@ -21,6 +21,7 @@ 'inform_me_for_next_zoom', 'optional_message', 'zoom_session_id', + 'partner_id', 'state', ]" /> diff --git a/partner_communication_switzerland/models/res_partner_zoom_attendee.py b/partner_communication_switzerland/models/res_partner_zoom_attendee.py index 9a93672d4..f6e3f5e7e 100644 --- a/partner_communication_switzerland/models/res_partner_zoom_attendee.py +++ b/partner_communication_switzerland/models/res_partner_zoom_attendee.py @@ -85,18 +85,44 @@ def create(self, vals_list): vals_list_to_create = vals_list.copy() for vals in vals_list: - existing_attendee = self.search( - [ - ("partner_id", "=", vals.get("partner_id")), - ("zoom_session_id", "=", vals.get("zoom_session_id")), - ] - ) - if existing_attendee: - vals_list_to_create.remove(vals) - del vals["partner_id"] - del vals["zoom_session_id"] - existing_attendee.write(vals) - res += existing_attendee + if vals.get("partner_id"): + existing_attendee = self.search( + [ + ("partner_id", "=", vals.get("partner_id")), + ("zoom_session_id", "=", vals.get("zoom_session_id")), + ] + ) + if existing_attendee: + vals_list_to_create.remove(vals) + del vals["partner_id"] + del vals["zoom_session_id"] + existing_attendee.write(vals) + res += existing_attendee + + else: + partner_vals = self._convert_vals_for_res_partner(vals) + partner_id = ( + self.env["res.partner.match"] + .match_values_to_partner( + partner_vals, match_update=False, match_create=False + ) + .id + ) + + existing_attendee = self.search( + [ + ("partner_id", "=", partner_id), + ("zoom_session_id", "=", vals.get("zoom_session_id")), + ] + ) + if existing_attendee: + vals_list_to_create.remove(vals) + del vals["partner_firstname"] + del vals["partner_lastname"] + del vals["partner_email"] + del vals["zoom_session_id"] + existing_attendee.write(vals) + res += existing_attendee res += super().create(vals_list_to_create) diff --git a/partner_communication_switzerland/templates/zoom_registration_form.xml b/partner_communication_switzerland/templates/zoom_registration_form.xml index 3678231f7..c472398ee 100644 --- a/partner_communication_switzerland/templates/zoom_registration_form.xml +++ b/partner_communication_switzerland/templates/zoom_registration_form.xml @@ -118,6 +118,7 @@
+
+
+
+ +
+
+