From 6c2ce2dc08357780336ac6fab5c5bd867608ec10 Mon Sep 17 00:00:00 2001 From: Jonas Linter Date: Mon, 29 Sep 2025 16:40:26 +0200 Subject: [PATCH] Swapped form id for submission id --- logs/wix_test_data_20250929_162447.json | 170 +++++++++++++ logs/wix_test_data_20250929_163212.json | 170 +++++++++++++ logs/wix_test_data_20250929_163449.json | 240 ++++++++++++++++++ src/alpine_bits_python/alpine_bits_helpers.py | 16 +- src/alpine_bits_python/api.py | 2 +- src/alpine_bits_python/main.py | 2 +- 6 files changed, 594 insertions(+), 6 deletions(-) create mode 100644 logs/wix_test_data_20250929_162447.json create mode 100644 logs/wix_test_data_20250929_163212.json create mode 100644 logs/wix_test_data_20250929_163449.json diff --git a/logs/wix_test_data_20250929_162447.json b/logs/wix_test_data_20250929_162447.json new file mode 100644 index 0000000..f99f0bb --- /dev/null +++ b/logs/wix_test_data_20250929_162447.json @@ -0,0 +1,170 @@ +{ + "timestamp": "2025-09-29T16:24:47.833595", + "client_ip": "127.0.0.1", + "headers": { + "host": "localhost:8080", + "content-type": "application/json", + "user-agent": "insomnia/2023.5.8", + "accept": "*/*", + "content-length": "4518" + }, + "data": { + "data": { + "formName": "Contact us", + "submissions": [ + { + "label": "Anreisedatum", + "value": "2026-01-17" + }, + { + "label": "Abreisedatum", + "value": "2026-01-24" + }, + { + "label": "Anzahl Erwachsene", + "value": "2" + }, + { + "label": "Anzahl Kinder", + "value": "0" + }, + { + "label": "Anrede", + "value": "Herr" + }, + { + "label": "Vorname", + "value": "Weislinger " + }, + { + "label": "Nachname", + "value": "Alain " + }, + { + "label": "Email", + "value": "alain-et-evelyne@hotmail.fr" + }, + { + "label": "Phone", + "value": "+33 6 41 77 99 09" + }, + { + "label": "Einwilligung Marketing", + "value": "Cochée" + } + ], + "field:date_picker_7e65": "2026-01-24", + "field:number_7cf5": "2", + "submissionTime": "2025-09-27T19:36:39.137Z", + "field:form_field_5a7b": "Cochée", + "context": { + "metaSiteId": "7b28c2ce-1e20-4d07-9e86-73d822007e18", + "activationId": "d59c463c-96e0-4742-b4f7-70b8f0431168" + }, + "field:email_5139": "alain-et-evelyne@hotmail.fr", + "field:phone_4c77": "+33 6 41 77 99 09", + "_context": { + "activation": { + "id": "d59c463c-96e0-4742-b4f7-70b8f0431168" + }, + "configuration": { + "id": "483806f6-24ba-413f-9431-6b1ad9379f5c" + }, + "app": { + "id": "225dd912-7dea-4738-8688-4b8c6955ffc2" + }, + "action": { + "id": "a85d9873-f8ed-426a-90b0-fb64a8e50406" + }, + "trigger": { + "key": "wix_form_app-form_submitted" + } + }, + "formFieldMask": [ + "field:angebot_auswaehlen", + "field:date_picker_a7c8", + "field:date_picker_7e65", + "field:number_7cf5", + "field:anzahl_kinder", + "field:alter_kind_3", + "field:alter_kind_25", + "field:alter_kind_4", + "field:alter_kind_5", + "field:alter_kind_6", + "field:alter_kind_7", + "field:alter_kind_8", + "field:alter_kind_9", + "field:alter_kind_10", + "field:alter_kind_11", + "field:anrede", + "field:first_name_abae", + "field:last_name_d97c", + "field:email_5139", + "field:phone_4c77", + "field:long_answer_3524", + "field:form_field_5a7b", + "field:utm_source", + "field:utm_medium", + "field:utm_campaign", + "field:utm_term", + "field:utm_content", + "field:utm_term_id", + "field:utm_content_id", + "field:gad_source", + "field:gad_campaignid", + "field:gbraid", + "field:gclid", + "field:fbclid", + "metaSiteId" + ], + "contact": { + "name": { + "first": "Weislinger", + "last": "Alain" + }, + "email": "alain-et-evelyne@hotmail.fr", + "locale": "de-de", + "phones": [ + { + "tag": "UNTAGGED", + "formattedPhone": "+33 6 41 77 99 09", + "id": "90ffc824-1fd7-4167-b29f-24a4b62a0773", + "countryCode": "FR", + "e164Phone": "+33641779909", + "primary": true, + "phone": "6 41 77 99 09" + } + ], + "contactId": "250e24db-d41e-4f6e-835d-75acdf2ef2b7", + "emails": [ + { + "id": "2c071108-2410-4db8-99fa-b50b75a02493", + "tag": "UNTAGGED", + "email": "alain-et-evelyne@hotmail.fr", + "primary": true + } + ], + "updatedDate": "2025-09-27T19:36:41.908Z", + "phone": "+33641779909", + "createdDate": "2025-09-27T19:36:41.054Z" + }, + "submissionId": "6cfee967-69a8-454a-a10e-0aa03868ba6d", + "field:anzahl_kinder": "0", + "field:first_name_abae": "Weislinger ", + "contactId": "250e24db-d41e-4f6e-835d-75acdf2ef2b7", + "field:date_picker_a7c8": "2026-01-17", + "field:last_name_d97c": "Alain ", + "submissionsLink": "https://manage.wix.app/forms/submissions/7b28c2ce-1e20-4d07-9e86-73d822007e18/e084006b-ae83-4e4d-b2f5-074118cdb3b1?d=https%3A%2F%2Fmanage.wix.com%2Fdashboard%2F7b28c2ce-1e20-4d07-9e86-73d822007e18%2Fwix-forms%2Fform%2Fe084006b-ae83-4e4d-b2f5-074118cdb3b1%2Fsubmissions&s=true", + "field:anrede": "Herr", + "formId": "e084006b-ae83-4e4d-b2f5-074118cdb3b1" + } + }, + "origin_header": null, + "all_headers": { + "host": "localhost:8080", + "content-type": "application/json", + "user-agent": "insomnia/2023.5.8", + "accept": "*/*", + "content-length": "4518" + } +} \ No newline at end of file diff --git a/logs/wix_test_data_20250929_163212.json b/logs/wix_test_data_20250929_163212.json new file mode 100644 index 0000000..5a206ce --- /dev/null +++ b/logs/wix_test_data_20250929_163212.json @@ -0,0 +1,170 @@ +{ + "timestamp": "2025-09-29T16:32:12.776585", + "client_ip": "127.0.0.1", + "headers": { + "host": "localhost:8080", + "content-type": "application/json", + "user-agent": "insomnia/2023.5.8", + "accept": "*/*", + "content-length": "4518" + }, + "data": { + "data": { + "formName": "Contact us", + "submissions": [ + { + "label": "Anreisedatum", + "value": "2026-01-17" + }, + { + "label": "Abreisedatum", + "value": "2026-01-24" + }, + { + "label": "Anzahl Erwachsene", + "value": "2" + }, + { + "label": "Anzahl Kinder", + "value": "0" + }, + { + "label": "Anrede", + "value": "Herr" + }, + { + "label": "Vorname", + "value": "Weislinger " + }, + { + "label": "Nachname", + "value": "Alain " + }, + { + "label": "Email", + "value": "alain-et-evelyne@hotmail.fr" + }, + { + "label": "Phone", + "value": "+33 6 41 77 99 09" + }, + { + "label": "Einwilligung Marketing", + "value": "Cochée" + } + ], + "field:date_picker_7e65": "2026-01-24", + "field:number_7cf5": "2", + "submissionTime": "2025-09-27T19:36:39.137Z", + "field:form_field_5a7b": "Cochée", + "context": { + "metaSiteId": "7b28c2ce-1e20-4d07-9e86-73d822007e18", + "activationId": "d59c463c-96e0-4742-b4f7-70b8f0431168" + }, + "field:email_5139": "alain-et-evelyne@hotmail.fr", + "field:phone_4c77": "+33 6 41 77 99 09", + "_context": { + "activation": { + "id": "d59c463c-96e0-4742-b4f7-70b8f0431168" + }, + "configuration": { + "id": "483806f6-24ba-413f-9431-6b1ad9379f5c" + }, + "app": { + "id": "225dd912-7dea-4738-8688-4b8c6955ffc2" + }, + "action": { + "id": "a85d9873-f8ed-426a-90b0-fb64a8e50406" + }, + "trigger": { + "key": "wix_form_app-form_submitted" + } + }, + "formFieldMask": [ + "field:angebot_auswaehlen", + "field:date_picker_a7c8", + "field:date_picker_7e65", + "field:number_7cf5", + "field:anzahl_kinder", + "field:alter_kind_3", + "field:alter_kind_25", + "field:alter_kind_4", + "field:alter_kind_5", + "field:alter_kind_6", + "field:alter_kind_7", + "field:alter_kind_8", + "field:alter_kind_9", + "field:alter_kind_10", + "field:alter_kind_11", + "field:anrede", + "field:first_name_abae", + "field:last_name_d97c", + "field:email_5139", + "field:phone_4c77", + "field:long_answer_3524", + "field:form_field_5a7b", + "field:utm_source", + "field:utm_medium", + "field:utm_campaign", + "field:utm_term", + "field:utm_content", + "field:utm_term_id", + "field:utm_content_id", + "field:gad_source", + "field:gad_campaignid", + "field:gbraid", + "field:gclid", + "field:fbclid", + "metaSiteId" + ], + "contact": { + "name": { + "first": "Weislinger", + "last": "Alain" + }, + "email": "alain-et-evelyne@hotmail.fr", + "locale": "de-de", + "phones": [ + { + "tag": "UNTAGGED", + "formattedPhone": "+33 6 41 77 99 09", + "id": "90ffc824-1fd7-4167-b29f-24a4b62a0773", + "countryCode": "FR", + "e164Phone": "+33641779909", + "primary": true, + "phone": "6 41 77 99 09" + } + ], + "contactId": "250e24db-d41e-4f6e-835d-75acdf2ef2b7", + "emails": [ + { + "id": "2c071108-2410-4db8-99fa-b50b75a02493", + "tag": "UNTAGGED", + "email": "alain-et-evelyne@hotmail.fr", + "primary": true + } + ], + "updatedDate": "2025-09-27T19:36:41.908Z", + "phone": "+33641779909", + "createdDate": "2025-09-27T19:36:41.054Z" + }, + "submissionId": "6cfee967-69a8-454a-a10e-0aa03868ba6d", + "field:anzahl_kinder": "0", + "field:first_name_abae": "Weislinger ", + "contactId": "250e24db-d41e-4f6e-835d-75acdf2ef2b7", + "field:date_picker_a7c8": "2026-01-17", + "field:last_name_d97c": "Alain ", + "submissionsLink": "https://manage.wix.app/forms/submissions/7b28c2ce-1e20-4d07-9e86-73d822007e18/e084006b-ae83-4e4d-b2f5-074118cdb3b1?d=https%3A%2F%2Fmanage.wix.com%2Fdashboard%2F7b28c2ce-1e20-4d07-9e86-73d822007e18%2Fwix-forms%2Fform%2Fe084006b-ae83-4e4d-b2f5-074118cdb3b1%2Fsubmissions&s=true", + "field:anrede": "Herr", + "formId": "e084006b-ae83-4e4d-b2f5-074118cdb3b1" + } + }, + "origin_header": null, + "all_headers": { + "host": "localhost:8080", + "content-type": "application/json", + "user-agent": "insomnia/2023.5.8", + "accept": "*/*", + "content-length": "4518" + } +} \ No newline at end of file diff --git a/logs/wix_test_data_20250929_163449.json b/logs/wix_test_data_20250929_163449.json new file mode 100644 index 0000000..0486a2c --- /dev/null +++ b/logs/wix_test_data_20250929_163449.json @@ -0,0 +1,240 @@ +{ + "timestamp": "2025-09-29T16:34:49.785457", + "client_ip": "127.0.0.1", + "headers": { + "host": "localhost:8080", + "content-type": "application/json", + "user-agent": "insomnia/2023.5.8", + "accept": "*/*", + "content-length": "6638" + }, + "data": { + "data": { + "formName": "Contact us", + "submissions": [ + { + "label": "Angebot auswählen", + "value": "Zimmer: Doppelzimmer" + }, + { + "label": "Anreisedatum", + "value": "2025-10-03" + }, + { + "label": "Abreisedatum", + "value": "2025-10-05" + }, + { + "label": "Anzahl Erwachsene", + "value": "2" + }, + { + "label": "Anzahl Kinder", + "value": "1" + }, + { + "label": "Alter Kind 1", + "value": "3" + }, + { + "label": "Anrede", + "value": "Familie" + }, + { + "label": "Vorname", + "value": "Miriana" + }, + { + "label": "Nachname", + "value": "Darman" + }, + { + "label": "Email", + "value": "miriana.m9@gmail.com" + }, + { + "label": "Phone", + "value": "+39 348 443 0969" + }, + { + "label": "Einwilligung Marketing", + "value": "Non selezionato" + }, + { + "label": "utm_Source", + "value": "ig" + }, + { + "label": "utm_Medium", + "value": "Instagram_Stories" + }, + { + "label": "utm_Campaign", + "value": "Conversions_Hotel_Bemelmans_ITA" + }, + { + "label": "utm_Term", + "value": "Cold_Traffic_Conversions_Hotel_Bemelmans_ITA" + }, + { + "label": "utm_Content", + "value": "Grafik_4_Spätsommer_23.08-07.09_Landingpage_ITA" + }, + { + "label": "utm_term_id", + "value": "120232007764490196" + }, + { + "label": "utm_content_id", + "value": "120232007764490196" + }, + { + "label": "gad_source", + "value": "" + }, + { + "label": "gad_campaignid", + "value": "" + }, + { + "label": "gbraid", + "value": "" + }, + { + "label": "gclid", + "value": "" + }, + { + "label": "fbclid", + "value": "PAZXh0bgNhZW0BMABhZGlkAasmYBTNE3QBp1jWuJ9zIpfEGRJMP63fMAMI405yvG5EtH-OT0PxSkAbBJaudFHR6cMtkdHu_aem_fopaFtECyVPNW9fmWfEkyA" + } + ], + "field:date_picker_7e65": "2025-10-05", + "field:number_7cf5": "2", + "field:utm_source": "ig", + "submissionTime": "2025-09-27T07:04:55.843Z", + "field:alter_kind_3": "3", + "field:gad_source": "", + "field:form_field_5a7b": "Non selezionato", + "field:gad_campaignid": "", + "field:utm_medium": "Instagram_Stories", + "field:utm_term_id": "120232007764490196", + "context": { + "metaSiteId": "1dea821c-8168-4736-96e4-4b92e8b364cf", + "activationId": "d41b7796-dca2-40f1-8245-c2f26a096f19" + }, + "field:email_5139": "miriana.m9@gmail.com", + "field:phone_4c77": "+39 348 443 0969", + "_context": { + "activation": { + "id": "d41b7796-dca2-40f1-8245-c2f26a096f19" + }, + "configuration": { + "id": "a976f18c-fa86-495d-be1e-676df188eeae" + }, + "app": { + "id": "225dd912-7dea-4738-8688-4b8c6955ffc2" + }, + "action": { + "id": "152db4d7-5263-40c4-be2b-1c81476318b7" + }, + "trigger": { + "key": "wix_form_app-form_submitted" + } + }, + "field:gclid": "", + "formFieldMask": [ + "field:angebot_auswaehlen", + "field:date_picker_a7c8", + "field:date_picker_7e65", + "field:number_7cf5", + "field:anzahl_kinder", + "field:alter_kind_3", + "field:alter_kind_25", + "field:alter_kind_4", + "field:alter_kind_5", + "field:alter_kind_6", + "field:alter_kind_7", + "field:alter_kind_8", + "field:alter_kind_9", + "field:alter_kind_10", + "field:alter_kind_11", + "field:anrede", + "field:first_name_abae", + "field:last_name_d97c", + "field:email_5139", + "field:phone_4c77", + "field:long_answer_3524", + "field:form_field_5a7b", + "field:utm_source", + "field:utm_medium", + "field:utm_campaign", + "field:utm_term", + "field:utm_content", + "field:utm_term_id", + "field:utm_content_id", + "field:gad_source", + "field:gad_campaignid", + "field:gbraid", + "field:gclid", + "field:fbclid", + "metaSiteId" + ], + "contact": { + "name": { + "first": "Miriana", + "last": "Darman" + }, + "email": "miriana.m9@gmail.com", + "locale": "it-it", + "phones": [ + { + "tag": "UNTAGGED", + "formattedPhone": "+39 348 443 0969", + "id": "ac9d623e-6aaa-4022-856a-0dd64d0ff3fb", + "countryCode": "IT", + "e164Phone": "+393484430969", + "primary": true, + "phone": "348 443 0969" + } + ], + "contactId": "bcc29403-82ac-445a-be52-90a67180f16f", + "emails": [ + { + "id": "448de804-7353-46ed-9ae3-9c13ca521917", + "tag": "UNTAGGED", + "email": "miriana.m9@gmail.com", + "primary": true + } + ], + "updatedDate": "2025-09-27T07:04:58.724Z", + "phone": "+393484430969", + "createdDate": "2025-09-27T07:04:57.752Z" + }, + "submissionId": "3150614e-1b0a-47ba-a774-b0a0c71d8110", + "field:anzahl_kinder": "1", + "field:first_name_abae": "Miriana", + "field:utm_content_id": "120232007764490196", + "field:utm_campaign": "Conversions_Hotel_Bemelmans_ITA", + "field:utm_term": "Cold_Traffic_Conversions_Hotel_Bemelmans_ITA", + "contactId": "bcc29403-82ac-445a-be52-90a67180f16f", + "field:date_picker_a7c8": "2025-10-03", + "field:angebot_auswaehlen": "Zimmer: Doppelzimmer", + "field:utm_content": "Grafik_4_Spätsommer_23.08-07.09_Landingpage_ITA", + "field:last_name_d97c": "Darman", + "submissionsLink": "https://manage.wix.app/forms/submissions/1dea821c-8168-4736-96e4-4b92e8b364cf/e084006b-ae83-4e4d-b2f5-074118cdb3b1?d=https%3A%2F%2Fmanage.wix.com%2Fdashboard%2F1dea821c-8168-4736-96e4-4b92e8b364cf%2Fwix-forms%2Fform%2Fe084006b-ae83-4e4d-b2f5-074118cdb3b1%2Fsubmissions&s=true", + "field:gbraid": "", + "field:fbclid": "PAZXh0bgNhZW0BMABhZGlkAasmYBTNE3QBp1jWuJ9zIpfEGRJMP63fMAMI405yvG5EtH-OT0PxSkAbBJaudFHR6cMtkdHu_aem_fopaFtECyVPNW9fmWfEkyA", + "field:anrede": "Familie", + "formId": "e084006b-ae83-4e4d-b2f5-074118cdb3b1" + } + }, + "origin_header": null, + "all_headers": { + "host": "localhost:8080", + "content-type": "application/json", + "user-agent": "insomnia/2023.5.8", + "accept": "*/*", + "content-length": "6638" + } +} \ No newline at end of file diff --git a/src/alpine_bits_python/alpine_bits_helpers.py b/src/alpine_bits_python/alpine_bits_helpers.py index ec14089..d5aa2ef 100644 --- a/src/alpine_bits_python/alpine_bits_helpers.py +++ b/src/alpine_bits_python/alpine_bits_helpers.py @@ -431,7 +431,7 @@ class CommentFactory: @staticmethod def _create_comments( - comments_class: type, comment_class: type, data: CommentsData + comments_class: type[RetrieveComments] | type[NotifComments], comment_class: type[RetrieveComment] | type[NotifComment], data: CommentsData ) -> Any: """Internal method to create comments of the specified type.""" @@ -440,6 +440,8 @@ class CommentFactory: # Create list items list_items = [] for item_data in comment_data.list_items: + _LOGGER.info(f"Creating list item: value={item_data.value}, list_item={item_data.list_item}, language={item_data.language}") + list_item = comment_class.ListItem( value=item_data.value, list_item=item_data.list_item, @@ -760,9 +762,15 @@ def create_xml_from_db(list: list[Tuple[Reservation, Customer]]): ) ], ) - comments = [offer_comment, comment] if comment else [offer_comment] - comments_data = CommentsData(comments=comments) - comments_xml = alpine_bits_factory.create(comments_data, OtaMessageType.RETRIEVE) + comments = [offer_comment, comment] + + # filter out None comments + comments = [c for c in comments if c is not None] + + comments_xml = None + if not comments: + comments_data = CommentsData(comments=comments) + comments_xml = alpine_bits_factory.create(comments_data, OtaMessageType.RETRIEVE) res_global_info = ( OtaResRetrieveRs.ReservationsList.HotelReservation.ResGlobalInfo( diff --git a/src/alpine_bits_python/api.py b/src/alpine_bits_python/api.py index 839180c..222d1cb 100644 --- a/src/alpine_bits_python/api.py +++ b/src/alpine_bits_python/api.py @@ -315,7 +315,7 @@ async def process_wix_form_submission(request: Request, data: Dict[str, Any], db db_reservation = DBReservation( customer_id=db_customer.id, - form_id=data.get("formId"), + form_id=data.get("submissionId"), start_date=date.fromisoformat(start_date) if start_date else None, end_date=date.fromisoformat(end_date) if end_date else None, num_adults=num_adults, diff --git a/src/alpine_bits_python/main.py b/src/alpine_bits_python/main.py index c579a54..2d349c8 100644 --- a/src/alpine_bits_python/main.py +++ b/src/alpine_bits_python/main.py @@ -192,7 +192,7 @@ async def main(): db_reservation = DBReservation( customer_id=db_customer.id, - form_id=data.get("formId"), + form_id=data.get("submissionId"), start_date=date.fromisoformat(start_date) if start_date else None, end_date=date.fromisoformat(end_date) if end_date else None, num_adults=num_adults,