From e2301cd6c816184792bec3ea7d64b5c79eccb748 Mon Sep 17 00:00:00 2001 From: Nicolas Praz Date: Fri, 20 Sep 2024 11:34:40 +0200 Subject: [PATCH 1/4] found bug in new implementation, need to hadle both logged in and not logged in cases. code works, need to see if we can make it cleaner --- .../controllers/zoom_registration.py | 9 ++-- .../data/form_data.xml | 1 + .../models/res_partner_zoom_attendee.py | 44 ++++++++++++++----- .../templates/zoom_registration_form.xml | 20 +++++++++ 4 files changed, 56 insertions(+), 18 deletions(-) diff --git a/partner_communication_switzerland/controllers/zoom_registration.py b/partner_communication_switzerland/controllers/zoom_registration.py index e37640422..f3a8fa93b 100644 --- a/partner_communication_switzerland/controllers/zoom_registration.py +++ b/partner_communication_switzerland/controllers/zoom_registration.py @@ -33,19 +33,16 @@ class ZoomRegistration(Controller): def zoom_registration(self, session=None, **kwargs): if session is None: # Allow to register in the current zoom session for 15 minutes after start - start = datetime.now() - timedelta(minutes=15) + start = datetime.now() - timedelta(days=15) 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..bdfe695a2 100644 --- a/partner_communication_switzerland/models/res_partner_zoom_attendee.py +++ b/partner_communication_switzerland/models/res_partner_zoom_attendee.py @@ -85,18 +85,38 @@ 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..96f810d13 100644 --- a/partner_communication_switzerland/templates/zoom_registration_form.xml +++ b/partner_communication_switzerland/templates/zoom_registration_form.xml @@ -120,6 +120,7 @@ type="text" class="form-control s_website_form_input" name="partner_firstname" + t-att-value="partner.firstname" required="true" id="otfjqdxg28m9" /> @@ -149,6 +150,7 @@ type="text" class="form-control s_website_form_input" name="partner_lastname" + t-att-value="partner.lastname" required="true" id="ozoz9llszzse" /> @@ -174,6 +176,7 @@ type="text" class="form-control s_website_form_input" name="partner_email" + t-att-value="partner.email" required="true" id="o44vytmw5eep" /> @@ -303,6 +306,23 @@ /> + +
+
+
+ +
+
Date: Fri, 20 Sep 2024 11:46:39 +0200 Subject: [PATCH 2/4] cleanups --- .../models/res_partner_zoom_attendee.py | 3 ++- .../templates/zoom_registration_form.xml | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/partner_communication_switzerland/models/res_partner_zoom_attendee.py b/partner_communication_switzerland/models/res_partner_zoom_attendee.py index bdfe695a2..c14fc8beb 100644 --- a/partner_communication_switzerland/models/res_partner_zoom_attendee.py +++ b/partner_communication_switzerland/models/res_partner_zoom_attendee.py @@ -101,7 +101,8 @@ def create(self, vals_list): 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 + partner_id = self.env["res.partner.match"].match_values_to_partner( + partner_vals, match_update=False, match_create=False).id existing_attendee = self.search( [ diff --git a/partner_communication_switzerland/templates/zoom_registration_form.xml b/partner_communication_switzerland/templates/zoom_registration_form.xml index 96f810d13..c472398ee 100644 --- a/partner_communication_switzerland/templates/zoom_registration_form.xml +++ b/partner_communication_switzerland/templates/zoom_registration_form.xml @@ -118,9 +118,9 @@
@@ -148,9 +148,9 @@
@@ -174,9 +174,9 @@
@@ -199,6 +199,7 @@
-
Date: Fri, 20 Sep 2024 11:55:48 +0200 Subject: [PATCH 3/4] ruff-format --- .../models/res_partner_zoom_attendee.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/partner_communication_switzerland/models/res_partner_zoom_attendee.py b/partner_communication_switzerland/models/res_partner_zoom_attendee.py index c14fc8beb..f6e3f5e7e 100644 --- a/partner_communication_switzerland/models/res_partner_zoom_attendee.py +++ b/partner_communication_switzerland/models/res_partner_zoom_attendee.py @@ -101,8 +101,13 @@ def create(self, vals_list): 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 + partner_id = ( + self.env["res.partner.match"] + .match_values_to_partner( + partner_vals, match_update=False, match_create=False + ) + .id + ) existing_attendee = self.search( [ From d517f60e6b1aa78364334aec64e7f304a6b559e0 Mon Sep 17 00:00:00 2001 From: Nicolas Praz Date: Fri, 20 Sep 2024 13:13:05 +0200 Subject: [PATCH 4/4] reverted code used for testing --- .../controllers/zoom_registration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partner_communication_switzerland/controllers/zoom_registration.py b/partner_communication_switzerland/controllers/zoom_registration.py index f3a8fa93b..245080613 100644 --- a/partner_communication_switzerland/controllers/zoom_registration.py +++ b/partner_communication_switzerland/controllers/zoom_registration.py @@ -33,7 +33,7 @@ class ZoomRegistration(Controller): def zoom_registration(self, session=None, **kwargs): if session is None: # Allow to register in the current zoom session for 15 minutes after start - start = datetime.now() - timedelta(days=15) + start = datetime.now() - timedelta(minutes=15) session = request.env["res.partner.zoom.session"].get_next_session(start) if not session.website_published: raise Unauthorized()