14076 lines
1.1 MiB
14076 lines
1.1 MiB
2025-10-09 14:28:51 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-09 14:28:51 - root - INFO - Logging configured at INFO level
|
|
2025-10-09 14:28:51 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-09 14:28:51 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-09 14:28:51 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-09 14:28:51 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-09 14:28:51 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-09 14:28:51 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-09 14:28:51 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-09 14:28:51 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-09 14:28:51 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-09 14:28:51 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-09 16:54:04 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-09 16:54:04 - root - INFO - Logging configured at INFO level
|
|
2025-10-09 16:54:04 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-09 16:54:04 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-09 16:54:04 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-09 16:54:04 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-09 16:54:04 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-09 16:54:04 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-09 16:54:04 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-09 16:54:04 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-09 16:54:04 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-09 16:54:04 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-09 16:54:48 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-09 16:54:48 - root - INFO - Logging configured at INFO level
|
|
2025-10-09 16:54:48 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-09 16:54:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-09 16:54:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-09 16:54:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-09 16:54:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-09 16:54:48 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-09 16:54:48 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-09 16:54:48 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-09 16:54:48 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-09 16:54:48 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-09 16:54:50 - alpine_bits_python.api - INFO - AlpineBits authentication successful for user: sebastian (from config)
|
|
2025-10-09 16:54:50 - alpine_bits_python.api - INFO - Created directory: logs/conversions_import
|
|
2025-10-09 16:54:50 - alpine_bits_python.api - INFO - XML file saved to logs/conversions_import/file_sebastian_20251009_165450.xml by user sebastian (original: file.xml)
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: GET http://testserver/api/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: GET http://testserver/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:50:59.202818
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105059.json
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Error parsing submissionTime: Invalid isoformat string: '2025-10-10T08:50:59.201813+00:0'
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 438, in process_wix_form_submission
|
|
submissionTime = datetime.fromisoformat(
|
|
submissionTime[:-1]
|
|
) # Remove Z and convert
|
|
ValueError: Invalid isoformat string: '2025-10-10T08:50:59.201813+00:0'
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:50:59.255107
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105059.json
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Error parsing submissionTime: Invalid isoformat string: '2025-10-10T08:50:59.254048+00:0'
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 438, in process_wix_form_submission
|
|
submissionTime = datetime.fromisoformat(
|
|
submissionTime[:-1]
|
|
) # Remove Z and convert
|
|
ValueError: Invalid isoformat string: '2025-10-10T08:50:59.254048+00:0'
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:50:59.277382
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105059.json
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:50:59.298832
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105059.json
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Error parsing submissionTime: Invalid isoformat string: '2025-10-10T08:50:59.297932+00:0'
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 438, in process_wix_form_submission
|
|
submissionTime = datetime.fromisoformat(
|
|
submissionTime[:-1]
|
|
) # Remove Z and convert
|
|
ValueError: Invalid isoformat string: '2025-10-10T08:50:59.297932+00:0'
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form_test: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 570, in handle_wix_form_test
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form/test "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test_reservation.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/compressed.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: PUT http://testserver/etc/passwd "HTTP/1.1 404 Not Found"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/empty.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/notxml.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:50:59.581468
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105059.json
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Error parsing submissionTime: Invalid isoformat string: '2025-10-10T08:50:59.579944+00:0'
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 438, in process_wix_form_submission
|
|
submissionTime = datetime.fromisoformat(
|
|
submissionTime[:-1]
|
|
) # Remove Z and convert
|
|
ValueError: Invalid isoformat string: '2025-10-10T08:50:59.579944+00:0'
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 422 Unprocessable Entity"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:50:59.802241
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105059.json
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: OPTIONS http://testserver/api/health "HTTP/1.1 400 Bad Request"
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:50:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:50:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:50:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:50:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:50:59 - sqlalchemy.pool.impl.AsyncAdaptedQueuePool - ERROR - The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <Connection(Thread-74, started daemon 140038025373248)>>, which will be dropped, as it cannot be safely terminated. Please ensure that SQLAlchemy pooled connections are returned to the pool explicitly, either by calling ``close()`` or by using appropriate context managers to manage their lifecycle.
|
|
2025-10-10 10:51:10 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:10 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:10 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:10 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:10 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:10 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:51:10.201531
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105110.json
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - ERROR - Error parsing submissionTime: Invalid isoformat string: '2025-10-10T08:51:10.200188+00:0'
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 438, in process_wix_form_submission
|
|
submissionTime = datetime.fromisoformat(
|
|
submissionTime[:-1]
|
|
) # Remove Z and convert
|
|
ValueError: Invalid isoformat string: '2025-10-10T08:51:10.200188+00:0'
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - ERROR - Error in handle_wix_form: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:51:10 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:51:10 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:51:58 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:58 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:58 - httpx - INFO - HTTP Request: GET http://testserver/api/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:58 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:58 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:58 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:58 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:58 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:58 - httpx - INFO - HTTP Request: GET http://testserver/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:58 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:58 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:51:58.956742
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105158.json
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:51:58 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 200 OK"
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:58 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:58 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:58 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:58 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:51:59.000054
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105159.json
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:51:59.034662
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105159.json
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:51:59.054439
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105159.json
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form_test: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 570, in handle_wix_form_test
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form/test "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test_reservation.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/compressed.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: PUT http://testserver/etc/passwd "HTTP/1.1 404 Not Found"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/empty.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/notxml.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:51:59.297463
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105159.json
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 422 Unprocessable Entity"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:51:59.347401
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105159.json
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - ERROR - Error in handle_wix_form: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: OPTIONS http://testserver/api/health "HTTP/1.1 400 Bad Request"
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:51:59 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:51:59 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:51:59 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:51:59 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:51:59 - sqlalchemy.pool.impl.AsyncAdaptedQueuePool - ERROR - The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <Connection(Thread-74, started daemon 140034791437888)>>, which will be dropped, as it cannot be safely terminated. Please ensure that SQLAlchemy pooled connections are returned to the pool explicitly, either by calling ``close()`` or by using appropriate context managers to manage their lifecycle.
|
|
2025-10-10 10:52:16 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:16 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:16 - httpx - INFO - HTTP Request: GET http://testserver/api/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:16 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:16 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:16 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:16 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:16 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:16 - httpx - INFO - HTTP Request: GET http://testserver/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:16 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:16 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:52:16.887607
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105216.json
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:52:16 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:16 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:16 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:52:16.958883
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105216.json
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:52:16 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:52:16 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:16 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:52:17.009341
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105217.json
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - ERROR - Error in handle_wix_form: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:52:17.051714
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105217.json
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - ERROR - Error in handle_wix_form_test: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 570, in handle_wix_form_test
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form/test "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test_reservation.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/compressed.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: PUT http://testserver/etc/passwd "HTTP/1.1 404 Not Found"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/empty.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/notxml.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:17 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:17 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:52:17.465784
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105217.json
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:52:17 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:18 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:18 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:18 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 422 Unprocessable Entity"
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:18 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:18 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:52:18.617919
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105218.json
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - ERROR - Error in handle_wix_form: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:52:18 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:18 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:18 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:18 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:18 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:18 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:18 - httpx - INFO - HTTP Request: OPTIONS http://testserver/api/health "HTTP/1.1 400 Bad Request"
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:18 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:52:18 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:52:18 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:52:18 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:52:18 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:52:18 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:52:18 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:52:18 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:52:18 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:52:19 - sqlalchemy.pool.impl.AsyncAdaptedQueuePool - ERROR - The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <Connection(Thread-79, started daemon 139743552575040)>>, which will be dropped, as it cannot be safely terminated. Please ensure that SQLAlchemy pooled connections are returned to the pool explicitly, either by calling ``close()`` or by using appropriate context managers to manage their lifecycle.
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:05 - httpx - INFO - HTTP Request: GET http://testserver/api/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:05 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:05 - httpx - INFO - HTTP Request: GET http://testserver/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:53:05.769294
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105305.json
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:53:05 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:53:05.826369
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105305.json
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:53:05 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:53:05.860481
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105305.json
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - ERROR - Error in handle_wix_form: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:53:05 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:53:05.888275
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105305.json
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - ERROR - Error in handle_wix_form_test: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 570, in handle_wix_form_test
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:53:05 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form/test "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:05 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:05 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:05 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:05 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:05 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:05 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test_reservation.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/compressed.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: PUT http://testserver/etc/passwd "HTTP/1.1 404 Not Found"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/empty.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/notxml.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:53:06.196901
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105306.json
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 422 Unprocessable Entity"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:53:06.622362
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105306.json
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - ERROR - Error in handle_wix_form: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: OPTIONS http://testserver/api/health "HTTP/1.1 400 Bad Request"
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:53:06 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:53:06 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:53:06 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:53:06 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:53:06 - sqlalchemy.pool.impl.AsyncAdaptedQueuePool - ERROR - The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <Connection(Thread-79, started daemon 140423796344384)>>, which will be dropped, as it cannot be safely terminated. Please ensure that SQLAlchemy pooled connections are returned to the pool explicitly, either by calling ``close()`` or by using appropriate context managers to manage their lifecycle.
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: GET http://testserver/api/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: GET http://testserver/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:54:02.073375
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105402.json
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:54:02.140593
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105402.json
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:54:02.176251
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105402.json
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - ERROR - Error in handle_wix_form: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 445, in process_wix_form_submission
|
|
reservation = ReservationData(
|
|
unique_id=unique_id,
|
|
...<16 lines>...
|
|
gclid=data.get("field:gclid"),
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
|
|
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
|
|
pydantic_core._pydantic_core.ValidationError: 1 validation error for ReservationData
|
|
created_at
|
|
Input should be a valid datetime [type=datetime_type, input_value=None, input_type=NoneType]
|
|
For further information visit https://errors.pydantic.dev/2.11/v/datetime_type
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:54:02.206091
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105402.json
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - ERROR - Error in handle_wix_form_test: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 570, in handle_wix_form_test
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form/test "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test_reservation.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/compressed.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: PUT http://testserver/etc/passwd "HTTP/1.1 404 Not Found"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/empty.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/notxml.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:54:02.527423
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105402.json
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:54:02 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:03 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:03 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:03 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 422 Unprocessable Entity"
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:03 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:03 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:54:03.041180
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105403.json
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - ERROR - Error in handle_wix_form: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:54:03 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:03 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:03 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:03 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:03 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:03 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:03 - httpx - INFO - HTTP Request: OPTIONS http://testserver/api/health "HTTP/1.1 400 Bad Request"
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:03 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:54:03 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:54:03 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:54:03 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:54:03 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:54:03 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:54:03 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:54:03 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:54:03 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:54:03 - sqlalchemy.pool.impl.AsyncAdaptedQueuePool - ERROR - The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <Connection(Thread-74, started daemon 140719591437888)>>, which will be dropped, as it cannot be safely terminated. Please ensure that SQLAlchemy pooled connections are returned to the pool explicitly, either by calling ``close()`` or by using appropriate context managers to manage their lifecycle.
|
|
2025-10-10 10:55:48 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:55:48 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:55:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:55:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:55:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:55:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:55:48.071139
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105548.json
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:55:48 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:55:48 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:55:55 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:55:55 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:55:55 - httpx - INFO - HTTP Request: GET http://testserver/api/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:55:55 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:55:55 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:55:55 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:55:55.423973
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105555.json
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:55:55 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:55:55 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:56:02 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:56:02 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:56:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:56:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:56:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:56:02 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:56:02.594297
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105602.json
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:56:02 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: customers.contact_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 416, in process_wix_form_submission
|
|
await db.flush() # This assigns db_customer.id without committing
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 801, in flush
|
|
await greenlet_spawn(self.sync_session.flush, objects=objects)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: customers.contact_id
|
|
[SQL: INSERT INTO customers (given_name, contact_id, surname, name_prefix, email_address, phone, email_newsletter, address_line, city_name, postal_code, country_code, gender, birth_date, language, address_catalog, name_title) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: ('John', 'contact-123', 'Doe', 'Mr.', 'john.doe@example.com', '+1234567890', 1, None, None, None, None, None, None, 'en', 0, None)]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:56:02 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:57:00 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:00 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:00.937001
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105700.json
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:00 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:00 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:00 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:00 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:00.970096
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105700.json
|
|
2025-10-10 10:57:00 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:00 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:01 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:01 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:01.040061
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105701.json
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:01 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:01 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:01 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:01 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:01.056633
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105701.json
|
|
2025-10-10 10:57:01 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:01 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form/test "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: GET http://testserver/api/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: GET http://testserver/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:07.501948
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105707.json
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:07.540376
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105707.json
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:07.562981
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105707.json
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (8, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: reservations.md5_unique_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 471, in process_wix_form_submission
|
|
await db.commit()
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 1014, in commit
|
|
await greenlet_spawn(self.sync_session.commit)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 2032, in commit
|
|
trans.commit(_to_root=True)
|
|
~~~~~~~~~~~~^^^^^^^^^^^^^^^
|
|
File "<string>", line 2, in commit
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1313, in commit
|
|
self._prepare_impl()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "<string>", line 2, in _prepare_impl
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1288, in _prepare_impl
|
|
self.session.flush()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (8, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: reservations.md5_unique_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 471, in process_wix_form_submission
|
|
await db.commit()
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 1014, in commit
|
|
await greenlet_spawn(self.sync_session.commit)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 2032, in commit
|
|
trans.commit(_to_root=True)
|
|
~~~~~~~~~~~~^^^^^^^^^^^^^^^
|
|
File "<string>", line 2, in commit
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1313, in commit
|
|
self._prepare_impl()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "<string>", line 2, in _prepare_impl
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1288, in _prepare_impl
|
|
self.session.flush()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (8, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: reservations.md5_unique_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 471, in process_wix_form_submission
|
|
await db.commit()
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 1014, in commit
|
|
await greenlet_spawn(self.sync_session.commit)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 2032, in commit
|
|
trans.commit(_to_root=True)
|
|
~~~~~~~~~~~~^^^^^^^^^^^^^^^
|
|
File "<string>", line 2, in commit
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1313, in commit
|
|
self._prepare_impl()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "<string>", line 2, in _prepare_impl
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1288, in _prepare_impl
|
|
self.session.flush()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (8, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:07.595200
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105707.json
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form/test "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test_reservation.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/compressed.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: PUT http://testserver/etc/passwd "HTTP/1.1 404 Not Found"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/empty.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/notxml.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:07.737177
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105707.json
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 422 Unprocessable Entity"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:07.763631
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105707.json
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - ERROR - Error in handle_wix_form: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: OPTIONS http://testserver/api/health "HTTP/1.1 400 Bad Request"
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:07 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:07 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:07 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:07 - sqlalchemy.pool.impl.AsyncAdaptedQueuePool - ERROR - The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <Connection(Thread-52, started daemon 139933121508928)>>, which will be dropped, as it cannot be safely terminated. Please ensure that SQLAlchemy pooled connections are returned to the pool explicitly, either by calling ``close()`` or by using appropriate context managers to manage their lifecycle.
|
|
2025-10-10 10:57:14 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:14 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:14 - httpx - INFO - HTTP Request: GET http://testserver/api/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:14 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:14 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:14 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:14 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:14 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:14 - httpx - INFO - HTTP Request: GET http://testserver/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:14 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:14 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:14.871642
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105714.json
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:14 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:14 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:14 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:14 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:14.931247
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105714.json
|
|
2025-10-10 10:57:14 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:14 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:15.031197
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105715.json
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (12, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: reservations.md5_unique_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 471, in process_wix_form_submission
|
|
await db.commit()
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 1014, in commit
|
|
await greenlet_spawn(self.sync_session.commit)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 2032, in commit
|
|
trans.commit(_to_root=True)
|
|
~~~~~~~~~~~~^^^^^^^^^^^^^^^
|
|
File "<string>", line 2, in commit
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1313, in commit
|
|
self._prepare_impl()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "<string>", line 2, in _prepare_impl
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1288, in _prepare_impl
|
|
self.session.flush()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (12, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: reservations.md5_unique_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 471, in process_wix_form_submission
|
|
await db.commit()
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 1014, in commit
|
|
await greenlet_spawn(self.sync_session.commit)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 2032, in commit
|
|
trans.commit(_to_root=True)
|
|
~~~~~~~~~~~~^^^^^^^^^^^^^^^
|
|
File "<string>", line 2, in commit
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1313, in commit
|
|
self._prepare_impl()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "<string>", line 2, in _prepare_impl
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1288, in _prepare_impl
|
|
self.session.flush()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (12, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: reservations.md5_unique_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 471, in process_wix_form_submission
|
|
await db.commit()
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 1014, in commit
|
|
await greenlet_spawn(self.sync_session.commit)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 2032, in commit
|
|
trans.commit(_to_root=True)
|
|
~~~~~~~~~~~~^^^^^^^^^^^^^^^
|
|
File "<string>", line 2, in commit
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1313, in commit
|
|
self._prepare_impl()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "<string>", line 2, in _prepare_impl
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1288, in _prepare_impl
|
|
self.session.flush()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (12, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:15.075651
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105715.json
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form/test "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test_reservation.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/compressed.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: PUT http://testserver/etc/passwd "HTTP/1.1 404 Not Found"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/empty.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/notxml.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:15.391258
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105715.json
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 422 Unprocessable Entity"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:15.857786
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105715.json
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - ERROR - Error in handle_wix_form: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: OPTIONS http://testserver/api/health "HTTP/1.1 400 Bad Request"
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:15 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:15 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:15 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:15 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:15 - sqlalchemy.pool.impl.AsyncAdaptedQueuePool - ERROR - The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <Connection(Thread-53, started daemon 140628388357696)>>, which will be dropped, as it cannot be safely terminated. Please ensure that SQLAlchemy pooled connections are returned to the pool explicitly, either by calling ``close()`` or by using appropriate context managers to manage their lifecycle.
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: GET http://testserver/api/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: GET http://testserver/ "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:47.451294
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105747.json
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:47.488525
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105747.json
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:47.557385
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105747.json
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - ERROR - Error in handle_wix_form: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (16, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: reservations.md5_unique_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 471, in process_wix_form_submission
|
|
await db.commit()
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 1014, in commit
|
|
await greenlet_spawn(self.sync_session.commit)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 2032, in commit
|
|
trans.commit(_to_root=True)
|
|
~~~~~~~~~~~~^^^^^^^^^^^^^^^
|
|
File "<string>", line 2, in commit
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1313, in commit
|
|
self._prepare_impl()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "<string>", line 2, in _prepare_impl
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1288, in _prepare_impl
|
|
self.session.flush()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (16, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: reservations.md5_unique_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 471, in process_wix_form_submission
|
|
await db.commit()
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 1014, in commit
|
|
await greenlet_spawn(self.sync_session.commit)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 2032, in commit
|
|
trans.commit(_to_root=True)
|
|
~~~~~~~~~~~~^^^^^^^^^^^^^^^
|
|
File "<string>", line 2, in commit
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1313, in commit
|
|
self._prepare_impl()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "<string>", line 2, in _prepare_impl
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1288, in _prepare_impl
|
|
self.session.flush()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (16, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlite3.IntegrityError: UNIQUE constraint failed: reservations.md5_unique_id
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 471, in process_wix_form_submission
|
|
await db.commit()
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/session.py", line 1014, in commit
|
|
await greenlet_spawn(self.sync_session.commit)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
|
|
result = context.switch(value)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 2032, in commit
|
|
trans.commit(_to_root=True)
|
|
~~~~~~~~~~~~^^^^^^^^^^^^^^^
|
|
File "<string>", line 2, in commit
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1313, in commit
|
|
self._prepare_impl()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "<string>", line 2, in _prepare_impl
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
|
|
ret_value = fn(self, *arg, **kw)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 1288, in _prepare_impl
|
|
self.session.flush()
|
|
~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
|
|
self._flush(objects)
|
|
~~~~~~~~~~~^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
|
|
with util.safe_reraise():
|
|
~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
|
|
raise exc_value.with_traceback(exc_tb)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
|
|
flush_context.execute()
|
|
~~~~~~~~~~~~~~~~~~~~~^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
|
|
rec.execute(self)
|
|
~~~~~~~~~~~^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
|
|
util.preloaded.orm_persistence.save_obj(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self.mapper,
|
|
^^^^^^^^^^^^
|
|
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
uow,
|
|
^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
|
|
_emit_insert_statements(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
base_mapper,
|
|
^^^^^^^^^^^^
|
|
...<3 lines>...
|
|
insert,
|
|
^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
|
|
result = connection.execute(
|
|
statement,
|
|
params,
|
|
execution_options=execution_options,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
|
|
return meth(
|
|
self,
|
|
distilled_parameters,
|
|
execution_options or NO_OPTIONS,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
|
|
return connection._execute_clauseelement(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
self, distilled_params, execution_options
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
|
|
ret = self._execute_context(
|
|
dialect,
|
|
...<8 lines>...
|
|
cache_hit=cache_hit,
|
|
)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
|
|
return self._exec_single_context(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
dialect, context, statement, parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
|
|
self._handle_dbapi_exception(
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
|
e, str_statement, effective_parameters, cursor, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
|
|
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
|
|
self.dialect.do_execute(
|
|
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
cursor, str_statement, effective_parameters, context
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
)
|
|
^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
|
|
cursor.execute(statement, parameters)
|
|
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 177, in execute
|
|
self._adapt_connection._handle_exception(error)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 337, in _handle_exception
|
|
raise error
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 159, in execute
|
|
self.await_(_cursor.execute(operation, parameters))
|
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
|
|
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
|
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
|
|
value = await result
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 40, in execute
|
|
await self._execute(self._cursor.execute, sql, parameters)
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/cursor.py", line 32, in _execute
|
|
return await self._conn._execute(fn, *args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 122, in _execute
|
|
return await future
|
|
^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/.venv/lib/python3.13/site-packages/aiosqlite/core.py", line 105, in run
|
|
result = function()
|
|
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: reservations.md5_unique_id
|
|
[SQL: INSERT INTO reservations (customer_id, unique_id, md5_unique_id, start_date, end_date, num_adults, num_children, children_ages, offer, created_at, utm_source, utm_medium, utm_campaign, utm_term, utm_content, user_comment, fbclid, gclid, hotel_code, hotel_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
|
|
[parameters: (16, 'minimal-123', '2d316901028b3c2a906a20b8dcb57261', '2025-01-15', '2025-01-20', 2, 0, '', None, '2025-01-10 12:00:00.000000', None, None, None, None, None, '', None, None, '123', 'Frangart Inn')]
|
|
(Background on this error at: https://sqlalche.me/e/20/gkpj)
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:47.588411
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105747.json
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Dispatched form_processed event for hotel 123
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form/test "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test_reservation.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/compressed.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: PUT http://testserver/etc/passwd "HTTP/1.1 404 Not Found"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/empty.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/notxml.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:47.806604
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105747.json
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 422 Unprocessable Entity"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:47 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Received Wix form data at 2025-10-10T10:57:47.995552
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Created file owner: uid:1000, gid:1000
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - File mode: 644
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - INFO - Data logged to: logs/wix_test_data_20251010_105747.json
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - ERROR - Error in handle_wix_form: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:57:47 - alpine_bits_python.api - ERROR - Stack trace for handle_wix_form: Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
Traceback (most recent call last):
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 549, in handle_wix_form
|
|
return await process_wix_form_submission(request, data, db_session)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/divusjulius/repos/alpinebits_python/src/alpine_bits_python/api.py", line 367, in process_wix_form_submission
|
|
or data.get("submissions", [{}])[1].get("value")
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
|
|
IndexError: list index out of range
|
|
2025-10-10 10:57:47 - httpx - INFO - HTTP Request: POST http://testserver/api/webhook/wix-form "HTTP/1.1 500 Internal Server Error"
|
|
2025-10-10 10:57:47 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:48 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:48 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:48 - httpx - INFO - HTTP Request: POST http://testserver/api/alpinebits/server-2024-10 "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:48 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:48 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:48 - httpx - INFO - HTTP Request: OPTIONS http://testserver/api/health "HTTP/1.1 400 Bad Request"
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:48 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:57:48 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:57:48 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:57:48 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:57:48 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:48 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:48 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:48 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:48 - httpx - INFO - HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
|
|
2025-10-10 10:57:48 - sqlalchemy.pool.impl.AsyncAdaptedQueuePool - ERROR - The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <Connection(Thread-57, started daemon 139659759830592)>>, which will be dropped, as it cannot be safely terminated. Please ensure that SQLAlchemy pooled connections are returned to the pool explicitly, either by calling ``close()`` or by using appropriate context managers to manage their lifecycle.
|
|
2025-10-10 10:59:24 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:59:24 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:59:24 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:59:24 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:59:24 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:59:24 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:59:24 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:59:24 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:59:24 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:59:24 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:59:24 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:59:24 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:59:24 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test_reservation.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-10 10:59:53 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-10 10:59:53 - root - INFO - Logging configured at INFO level
|
|
2025-10-10 10:59:53 - alpine_bits_python.api - INFO - Application startup initiated
|
|
2025-10-10 10:59:53 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_NOTIF_REPORT
|
|
2025-10-10 10:59:53 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_PING
|
|
2025-10-10 10:59:53 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_HOTEL_RES_NOTIF_GUEST_REQUESTS
|
|
2025-10-10 10:59:53 - alpine_bits_python.alpinebits_server - INFO - Initializing action instance for AlpineBitsActionName.OTA_READ
|
|
2025-10-10 10:59:53 - alpine_bits_python.api - INFO - Hotel 39054_001 has no push_endpoint configured
|
|
2025-10-10 10:59:53 - alpine_bits_python.api - INFO - Hotel 135 has no push_endpoint configured
|
|
2025-10-10 10:59:53 - alpine_bits_python.api - INFO - Hotel 39052_001 has no push_endpoint configured
|
|
2025-10-10 10:59:53 - alpine_bits_python.api - INFO - Hotel 39040_001 has no push_endpoint configured
|
|
2025-10-10 10:59:53 - alpine_bits_python.api - INFO - Database tables checked/created at startup.
|
|
2025-10-10 10:59:53 - httpx - INFO - HTTP Request: PUT http://testserver/api/hoteldata/conversions_import/test_reservation.xml "HTTP/1.1 401 Unauthorized"
|
|
2025-10-15 08:49:50 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-15 08:49:50 - root - INFO - Logging configured at INFO level
|
|
2025-10-15 08:49:52 - alpine_bits_python.email_service - INFO - Email service initialized: smtp.gmail.com:587
|
|
2025-10-15 08:49:52 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-15 08:49:52 - root - INFO - Logging configured at INFO level
|
|
2025-10-15 08:49:54 - alpine_bits_python.email_service - INFO - Email service initialized: smtp.gmail.com:587
|
|
2025-10-15 08:52:37 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-15 08:52:37 - root - INFO - Logging configured at INFO level
|
|
2025-10-15 08:52:54 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-15 08:52:54 - root - INFO - Logging configured at INFO level
|
|
2025-10-15 08:52:56 - alpine_bits_python.email_service - INFO - Email service initialized: smtp.titan.email:465
|
|
2025-10-15 08:52:56 - root - INFO - Logging to file: alpinebits.log
|
|
2025-10-15 08:52:56 - root - INFO - Logging configured at INFO level
|
|
2025-10-15 08:52:58 - alpine_bits_python.email_service - INFO - Email service initialized: smtp.titan.email:465
|