2025-11-23 01:10:05 | INFO     | root | <module>:23 | Starting Hotel Booking API v1.0.0 in test mode
2025-11-23 01:10:05 | INFO     | root | <module>:44 | Skipping database table initialization in test environment
2025-11-23 01:10:06 | INFO     | root | <module>:57 | Rate limiting enabled: 60 requests/minute
2025-11-23 01:10:06 | INFO     | root | <module>:63 | CORS configured for production with 3 allowed origins
2025-11-23 01:10:06 | WARNING  | src.services.encryption_service | __init__:30 | ENCRYPTION_KEY not set. Generating temporary key. This should be set in production!
2025-11-23 01:10:07 | INFO     | root | <module>:178 | All routes registered successfully
2025-11-23 01:10:08 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/register
2025-11-23 01:10:08 | INFO     | src.utils.mailer | send_email:55 | Using SMTP settings from config/environment variables
2025-11-23 01:10:08 | ERROR    | src.utils.mailer | send_email:59 | SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:08 | ERROR    | src.utils.mailer | send_email:90 | Failed to send email to newuser@test.com: ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
Traceback (most recent call last):
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/utils/mailer.py", line 60, in send_email
    raise ValueError(error_msg)
ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:08 | ERROR    | src.services.auth_service | register:125 | Failed to send welcome email to newuser@test.com: ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
Traceback (most recent call last):
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/services/auth_service.py", line 118, in register
    await send_email(
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/utils/mailer.py", line 60, in send_email
    raise ValueError(error_msg)
ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:08 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/register - 201
2025-11-23 01:10:08 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/register "HTTP/1.1 201 Created"
2025-11-23 01:10:09 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/register
2025-11-23 01:10:09 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/register - 400
2025-11-23 01:10:09 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/register "HTTP/1.1 400 Bad Request"
2025-11-23 01:10:09 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/register
2025-11-23 01:10:09 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/register - 400
2025-11-23 01:10:09 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/register "HTTP/1.1 400 Bad Request"
2025-11-23 01:10:09 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/login
2025-11-23 01:10:09 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/login - 200
2025-11-23 01:10:09 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/login "HTTP/1.1 200 OK"
2025-11-23 01:10:09 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/login
2025-11-23 01:10:09 | WARNING  | src.services.auth_service | login:142 | Login attempt with non-existent email: nonexistent@test.com
2025-11-23 01:10:09 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/login - 401
2025-11-23 01:10:09 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/login "HTTP/1.1 401 Unauthorized"
2025-11-23 01:10:10 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/login
2025-11-23 01:10:10 | WARNING  | src.services.auth_service | login:152 | Login attempt with invalid password for user: customer@test.com
2025-11-23 01:10:10 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/login - 401
2025-11-23 01:10:10 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/login "HTTP/1.1 401 Unauthorized"
2025-11-23 01:10:10 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/login
2025-11-23 01:10:10 | WARNING  | src.services.auth_service | login:146 | Login attempt for inactive user: customer@test.com
2025-11-23 01:10:10 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/login - 400
2025-11-23 01:10:10 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/login "HTTP/1.1 400 Bad Request"
2025-11-23 01:10:11 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/auth/profile
2025-11-23 01:10:11 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/auth/profile - 200
2025-11-23 01:10:11 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/auth/profile "HTTP/1.1 200 OK"
2025-11-23 01:10:11 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/auth/profile
2025-11-23 01:10:11 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/auth/profile - 403
2025-11-23 01:10:11 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/auth/profile "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:11 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PUT /api/auth/profile
2025-11-23 01:10:11 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PUT /api/auth/profile - 200
2025-11-23 01:10:11 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PUT http://testserver/api/auth/profile "HTTP/1.1 200 OK"
2025-11-23 01:10:12 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PUT /api/auth/profile
2025-11-23 01:10:12 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PUT /api/auth/profile - 200
2025-11-23 01:10:12 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PUT http://testserver/api/auth/profile "HTTP/1.1 200 OK"
2025-11-23 01:10:13 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/login
2025-11-23 01:10:13 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/login - 200
2025-11-23 01:10:13 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/login "HTTP/1.1 200 OK"
2025-11-23 01:10:13 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/refresh-token
2025-11-23 01:10:13 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/refresh-token - 200
2025-11-23 01:10:13 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/refresh-token "HTTP/1.1 200 OK"
2025-11-23 01:10:13 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/refresh-token
2025-11-23 01:10:13 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/refresh-token - 401
2025-11-23 01:10:13 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/refresh-token "HTTP/1.1 401 Unauthorized"
2025-11-23 01:10:14 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/login
2025-11-23 01:10:14 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/login - 200
2025-11-23 01:10:14 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/login "HTTP/1.1 200 OK"
2025-11-23 01:10:14 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/logout
2025-11-23 01:10:14 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/logout - 200
2025-11-23 01:10:14 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/logout "HTTP/1.1 200 OK"
2025-11-23 01:10:14 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/forgot-password
2025-11-23 01:10:14 | INFO     | src.services.auth_service | forgot_password:337 | Attempting to send password reset email to customer@test.com
2025-11-23 01:10:14 | INFO     | src.services.auth_service | forgot_password:338 | Reset URL: http://localhost:5173/reset-password/062149c09081cc283d54a918ecea41cd231d40e6c9c69a7e17ceeef8270afd4c
2025-11-23 01:10:14 | INFO     | src.utils.mailer | send_email:55 | Using SMTP settings from config/environment variables
2025-11-23 01:10:14 | ERROR    | src.utils.mailer | send_email:59 | SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:14 | ERROR    | src.utils.mailer | send_email:90 | Failed to send email to customer@test.com: ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
Traceback (most recent call last):
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/utils/mailer.py", line 60, in send_email
    raise ValueError(error_msg)
ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:14 | ERROR    | src.services.auth_service | forgot_password:351 | Failed to send password reset email to customer@test.com: ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
Traceback (most recent call last):
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/services/auth_service.py", line 343, in forgot_password
    await send_email(
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/utils/mailer.py", line 60, in send_email
    raise ValueError(error_msg)
ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:14 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/forgot-password - 200
2025-11-23 01:10:14 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/forgot-password "HTTP/1.1 200 OK"
2025-11-23 01:10:14 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/auth/forgot-password
2025-11-23 01:10:14 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/auth/forgot-password - 200
2025-11-23 01:10:14 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/auth/forgot-password "HTTP/1.1 200 OK"
2025-11-23 01:10:15 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/bookings/
2025-11-23 01:10:15 | INFO     | src.routes.booking_routes | create_booking:176 | Received booking request from user 1: {'room_id': 1, 'check_in_date': '2025-11-27', 'check_out_date': '2025-11-29', 'total_price': 300.0, 'guest_count': 2, 'payment_method': 'cash'}
2025-11-23 01:10:15 | INFO     | src.routes.booking_routes | create_booking:360 | Deposit payment created: ID=1, amount=60.0, percentage=20%
2025-11-23 01:10:15 | ERROR    | src.routes.booking_routes | create_booking:450 | Failed to create invoice for booking 1: Strings are not accepted for attribute names in loader options; please use class-bound attributes directly.
2025-11-23 01:10:15 | ERROR    | src.routes.booking_routes | create_booking:451 | Traceback: Traceback (most recent call last):
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/routes/booking_routes.py", line 429, in create_booking
    deposit_invoice = InvoiceService.create_invoice_from_booking(booking_id=booking.id, db=db, created_by_id=current_user.id, tax_rate=tax_rate, discount_amount=deposit_discount, due_days=30, is_proforma=False, invoice_amount=deposit_amount, **invoice_kwargs)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/services/invoice_service.py", line 29, in create_invoice_from_booking
    booking = db.query(Booking).options(selectinload(Booking.service_usages).selectinload('service'), selectinload(Booking.room).selectinload('room_type'), selectinload(Booking.payments)).filter(Booking.id == booking_id).first()
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/strategy_options.py", line 409, in selectinload
    return self._set_relationship_strategy(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _set_relationship_strategy
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/base.py", line 283, in _generative
    x = fn(self, *args, **kw)
        ^^^^^^^^^^^^^^^^^^^^^
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/strategy_options.py", line 806, in _set_relationship_strategy
    self._clone_for_bind_strategy(
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/strategy_options.py", line 1270, in _clone_for_bind_strategy
    load_element = _TokenStrategyLoad.create(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/strategy_options.py", line 1742, in create
    path = opt._init_path(
           ^^^^^^^^^^^^^^^
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/strategy_options.py", line 2144, in _init_path
    raise sa_exc.ArgumentError(
sqlalchemy.exc.ArgumentError: Strings are not accepted for attribute names in loader options; please use class-bound attributes directly.

2025-11-23 01:10:15 | INFO     | src.routes.booking_routes | create_booking:464 | Booking 1 - Latest payment method: stripe, raw: PaymentMethod.stripe
2025-11-23 01:10:15 | INFO     | src.routes.booking_routes | create_booking:470 | Booking 1 - Final payment_method: stripe (from_payments: stripe, request: cash)
2025-11-23 01:10:15 | INFO     | src.routes.booking_routes | create_booking:477 | Booking 1 - service_usages: [], type: <class 'sqlalchemy.orm.collections.InstrumentedList'>
2025-11-23 01:10:15 | INFO     | src.routes.booking_routes | create_booking:483 | Booking 1 - No service_usages found, initializing empty array
2025-11-23 01:10:15 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/bookings/ - 200
2025-11-23 01:10:15 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/bookings/ "HTTP/1.1 200 OK"
2025-11-23 01:10:15 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/bookings/
2025-11-23 01:10:15 | INFO     | src.routes.booking_routes | create_booking:176 | Received booking request from user 1: {'room_id': 1}
2025-11-23 01:10:15 | ERROR    | src.routes.booking_routes | create_booking:198 | Missing required booking fields: check_in_date, check_out_date, total_price
2025-11-23 01:10:15 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/bookings/ - 400
2025-11-23 01:10:15 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/bookings/ "HTTP/1.1 400 Bad Request"
2025-11-23 01:10:16 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/bookings/
2025-11-23 01:10:16 | INFO     | src.routes.booking_routes | create_booking:176 | Received booking request from user 1: {'room_id': 99999, 'check_in_date': '2025-11-27', 'check_out_date': '2025-11-29', 'total_price': 300.0, 'guest_count': 2}
2025-11-23 01:10:16 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/bookings/ - 404
2025-11-23 01:10:16 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/bookings/ "HTTP/1.1 404 Not Found"
2025-11-23 01:10:16 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/bookings/
2025-11-23 01:10:16 | INFO     | src.routes.booking_routes | create_booking:176 | Received booking request from user 1: {'room_id': 1, 'check_in_date': '2025-11-23', 'check_out_date': '2025-11-25', 'total_price': 300.0, 'guest_count': 2}
2025-11-23 01:10:16 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/bookings/ - 409
2025-11-23 01:10:16 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/bookings/ "HTTP/1.1 409 Conflict"
2025-11-23 01:10:16 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/bookings/
2025-11-23 01:10:16 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/bookings/ - 403
2025-11-23 01:10:16 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/bookings/ "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:16 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/bookings/
2025-11-23 01:10:16 | INFO     | src.routes.booking_routes | create_booking:176 | Received booking request from user 1: {'room_id': 1, 'check_in_date': '2025-11-27', 'check_out_date': '2025-11-29', 'total_price': 300.0, 'guest_count': 2, 'payment_method': 'stripe'}
2025-11-23 01:10:16 | INFO     | src.routes.booking_routes | create_booking:350 | Creating payment for booking 1 with payment_method: stripe -> enum: stripe
2025-11-23 01:10:16 | INFO     | src.routes.booking_routes | create_booking:354 | Payment created: ID=1, method=stripe
2025-11-23 01:10:16 | ERROR    | src.routes.booking_routes | create_booking:450 | Failed to create invoice for booking 1: Strings are not accepted for attribute names in loader options; please use class-bound attributes directly.
2025-11-23 01:10:16 | ERROR    | src.routes.booking_routes | create_booking:451 | Traceback: Traceback (most recent call last):
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/routes/booking_routes.py", line 444, in create_booking
    full_invoice = InvoiceService.create_invoice_from_booking(booking_id=booking.id, db=db, created_by_id=current_user.id, tax_rate=tax_rate, discount_amount=booking_discount, due_days=30, is_proforma=False, **invoice_kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/services/invoice_service.py", line 29, in create_invoice_from_booking
    booking = db.query(Booking).options(selectinload(Booking.service_usages).selectinload('service'), selectinload(Booking.room).selectinload('room_type'), selectinload(Booking.payments)).filter(Booking.id == booking_id).first()
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/strategy_options.py", line 409, in selectinload
    return self._set_relationship_strategy(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _set_relationship_strategy
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/base.py", line 283, in _generative
    x = fn(self, *args, **kw)
        ^^^^^^^^^^^^^^^^^^^^^
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/strategy_options.py", line 806, in _set_relationship_strategy
    self._clone_for_bind_strategy(
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/strategy_options.py", line 1270, in _clone_for_bind_strategy
    load_element = _TokenStrategyLoad.create(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/strategy_options.py", line 1742, in create
    path = opt._init_path(
           ^^^^^^^^^^^^^^^
  File "/home/gnx/Desktop/Hotel-Booking/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/strategy_options.py", line 2144, in _init_path
    raise sa_exc.ArgumentError(
sqlalchemy.exc.ArgumentError: Strings are not accepted for attribute names in loader options; please use class-bound attributes directly.

2025-11-23 01:10:16 | INFO     | src.routes.booking_routes | create_booking:464 | Booking 1 - Latest payment method: stripe, raw: PaymentMethod.stripe
2025-11-23 01:10:16 | INFO     | src.routes.booking_routes | create_booking:470 | Booking 1 - Final payment_method: stripe (from_payments: stripe, request: stripe)
2025-11-23 01:10:16 | INFO     | src.routes.booking_routes | create_booking:477 | Booking 1 - service_usages: [], type: <class 'sqlalchemy.orm.collections.InstrumentedList'>
2025-11-23 01:10:16 | INFO     | src.routes.booking_routes | create_booking:483 | Booking 1 - No service_usages found, initializing empty array
2025-11-23 01:10:16 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/bookings/ - 200
2025-11-23 01:10:16 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/bookings/ "HTTP/1.1 200 OK"
2025-11-23 01:10:17 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/bookings/me
2025-11-23 01:10:17 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/bookings/me - 200
2025-11-23 01:10:17 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/bookings/me "HTTP/1.1 200 OK"
2025-11-23 01:10:17 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/bookings/
2025-11-23 01:10:17 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/bookings/ - 200
2025-11-23 01:10:17 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/bookings/ "HTTP/1.1 200 OK"
2025-11-23 01:10:18 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/bookings/
2025-11-23 01:10:18 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/bookings/ - 403
2025-11-23 01:10:18 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/bookings/ "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:18 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/bookings/
2025-11-23 01:10:18 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/bookings/ - 200
2025-11-23 01:10:18 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/bookings/?page=1&limit=5 "HTTP/1.1 200 OK"
2025-11-23 01:10:19 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/bookings/1
2025-11-23 01:10:19 | INFO     | src.routes.booking_routes | get_booking_by_id:530 | Get booking 1 - Final payment_method: cash
2025-11-23 01:10:19 | INFO     | src.routes.booking_routes | get_booking_by_id:550 | Get booking 1 - service_usages: [], type: <class 'sqlalchemy.orm.collections.InstrumentedList'>
2025-11-23 01:10:19 | INFO     | src.routes.booking_routes | get_booking_by_id:556 | Get booking 1 - No service_usages found, initializing empty array
2025-11-23 01:10:19 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/bookings/1 - 200
2025-11-23 01:10:19 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/bookings/1 "HTTP/1.1 200 OK"
2025-11-23 01:10:19 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/bookings/99999
2025-11-23 01:10:19 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/bookings/99999 - 404
2025-11-23 01:10:19 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/bookings/99999 "HTTP/1.1 404 Not Found"
2025-11-23 01:10:20 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/bookings/1
2025-11-23 01:10:20 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/bookings/1 - 403
2025-11-23 01:10:20 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/bookings/1 "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:20 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PATCH /api/bookings/1/cancel
2025-11-23 01:10:20 | INFO     | src.utils.mailer | send_email:55 | Using SMTP settings from config/environment variables
2025-11-23 01:10:20 | ERROR    | src.utils.mailer | send_email:59 | SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:20 | ERROR    | src.utils.mailer | send_email:90 | Failed to send email to customer@test.com: ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
Traceback (most recent call last):
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/utils/mailer.py", line 60, in send_email
    raise ValueError(error_msg)
ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:20 | ERROR    | src.routes.booking_routes | cancel_booking:639 | Failed to send cancellation email: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:20 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PATCH /api/bookings/1/cancel - 200
2025-11-23 01:10:20 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PATCH http://testserver/api/bookings/1/cancel "HTTP/1.1 200 OK"
2025-11-23 01:10:21 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PATCH /api/bookings/99999/cancel
2025-11-23 01:10:21 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PATCH /api/bookings/99999/cancel - 404
2025-11-23 01:10:21 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PATCH http://testserver/api/bookings/99999/cancel "HTTP/1.1 404 Not Found"
2025-11-23 01:10:21 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PATCH /api/bookings/1/cancel
2025-11-23 01:10:21 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PATCH /api/bookings/1/cancel - 403
2025-11-23 01:10:21 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PATCH http://testserver/api/bookings/1/cancel "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:22 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PATCH /api/bookings/1/cancel
2025-11-23 01:10:22 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PATCH /api/bookings/1/cancel - 400
2025-11-23 01:10:22 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PATCH http://testserver/api/bookings/1/cancel "HTTP/1.1 400 Bad Request"
2025-11-23 01:10:22 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PUT /api/bookings/1
2025-11-23 01:10:22 | INFO     | src.services.notification_service | _send_email:218 | Email notification 1 sent (mock)
2025-11-23 01:10:22 | INFO     | src.utils.mailer | send_email:55 | Using SMTP settings from config/environment variables
2025-11-23 01:10:22 | ERROR    | src.utils.mailer | send_email:59 | SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:22 | ERROR    | src.utils.mailer | send_email:90 | Failed to send email to customer@test.com: ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
Traceback (most recent call last):
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/utils/mailer.py", line 60, in send_email
    raise ValueError(error_msg)
ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:22 | ERROR    | src.routes.booking_routes | update_booking:815 | Failed to send status change email: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.
2025-11-23 01:10:22 | ERROR    | src.routes.booking_routes | update_booking:817 | Traceback (most recent call last):
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/routes/booking_routes.py", line 769, in update_booking
    await send_email(to=guest_email, subject=f'Booking Confirmed - {booking.booking_number}', html=email_html)
  File "/home/gnx/Desktop/Hotel-Booking/Backend/src/utils/mailer.py", line 60, in send_email
    raise ValueError(error_msg)
ValueError: SMTP mailer not configured. Set SMTP_HOST, SMTP_USER and SMTP_PASSWORD in .env file.

2025-11-23 01:10:22 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PUT /api/bookings/1 - 200
2025-11-23 01:10:22 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PUT http://testserver/api/bookings/1 "HTTP/1.1 200 OK"
2025-11-23 01:10:23 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PUT /api/bookings/1
2025-11-23 01:10:23 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PUT /api/bookings/1 - 403
2025-11-23 01:10:23 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PUT http://testserver/api/bookings/1 "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:23 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PUT /api/bookings/99999
2025-11-23 01:10:23 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PUT /api/bookings/99999 - 404
2025-11-23 01:10:23 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PUT http://testserver/api/bookings/99999 "HTTP/1.1 404 Not Found"
2025-11-23 01:10:23 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/bookings/check/BK-TEST-001
2025-11-23 01:10:23 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/bookings/check/BK-TEST-001 - 200
2025-11-23 01:10:23 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/bookings/check/BK-TEST-001 "HTTP/1.1 200 OK"
2025-11-23 01:10:24 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/bookings/check/INVALID-NUMBER
2025-11-23 01:10:24 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/bookings/check/INVALID-NUMBER - 404
2025-11-23 01:10:24 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/bookings/check/INVALID-NUMBER "HTTP/1.1 404 Not Found"
2025-11-23 01:10:24 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/bookings/admin-create
2025-11-23 01:10:24 | INFO     | src.routes.booking_routes | admin_create_booking:904 | Admin/Staff 1 creating booking for user 2: {'user_id': 2, 'room_id': 1, 'check_in_date': '2025-12-02', 'check_out_date': '2025-12-04', 'total_price': 300.0, 'guest_count': 2, 'payment_method': 'cash', 'status': 'confirmed'}
2025-11-23 01:10:24 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/bookings/admin-create - 200
2025-11-23 01:10:24 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/bookings/admin-create "HTTP/1.1 200 OK"
2025-11-23 01:10:25 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/bookings/admin-create
2025-11-23 01:10:25 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/bookings/admin-create - 403
2025-11-23 01:10:25 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/bookings/admin-create "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:25 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /health
2025-11-23 01:10:25 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /health - 200
2025-11-23 01:10:25 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/health "HTTP/1.1 200 OK"
2025-11-23 01:10:25 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/health
2025-11-23 01:10:25 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/health - 200
2025-11-23 01:10:25 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/health "HTTP/1.1 200 OK"
2025-11-23 01:10:25 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /metrics
2025-11-23 01:10:25 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /metrics - 200
2025-11-23 01:10:25 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/metrics "HTTP/1.1 200 OK"
2025-11-23 01:10:26 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/payments/
2025-11-23 01:10:26 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/payments/ - 200
2025-11-23 01:10:26 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/payments/ "HTTP/1.1 200 OK"
2025-11-23 01:10:26 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/payments/
2025-11-23 01:10:26 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/payments/ - 200
2025-11-23 01:10:26 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/payments/ "HTTP/1.1 200 OK"
2025-11-23 01:10:26 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/payments/booking/1
2025-11-23 01:10:26 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/payments/booking/1 - 200
2025-11-23 01:10:26 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/payments/booking/1 "HTTP/1.1 200 OK"
2025-11-23 01:10:27 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/payments/booking/1
2025-11-23 01:10:27 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/payments/booking/1 - 403
2025-11-23 01:10:27 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/payments/booking/1 "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:27 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/payments/1
2025-11-23 01:10:27 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/payments/1 - 200
2025-11-23 01:10:27 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/payments/1 "HTTP/1.1 200 OK"
2025-11-23 01:10:28 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/payments/99999
2025-11-23 01:10:28 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/payments/99999 - 404
2025-11-23 01:10:28 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/payments/99999 "HTTP/1.1 404 Not Found"
2025-11-23 01:10:28 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/reviews/
2025-11-23 01:10:28 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/reviews/ - 200
2025-11-23 01:10:28 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/reviews/ "HTTP/1.1 200 OK"
2025-11-23 01:10:28 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/reviews/
2025-11-23 01:10:28 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/reviews/ - 403
2025-11-23 01:10:28 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/reviews/ "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:29 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/reviews/
2025-11-23 01:10:29 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/reviews/ - 200
2025-11-23 01:10:29 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/reviews/ "HTTP/1.1 200 OK"
2025-11-23 01:10:29 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/reviews/room/1
2025-11-23 01:10:29 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/reviews/room/1 - 200
2025-11-23 01:10:29 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/reviews/room/1 "HTTP/1.1 200 OK"
2025-11-23 01:10:29 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/reviews/room/1
2025-11-23 01:10:29 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/reviews/room/1 - 200
2025-11-23 01:10:29 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/reviews/room/1 "HTTP/1.1 200 OK"
2025-11-23 01:10:29 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/
2025-11-23 01:10:29 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/ - 200
2025-11-23 01:10:29 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/ "HTTP/1.1 200 OK"
2025-11-23 01:10:29 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/
2025-11-23 01:10:29 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/ - 200
2025-11-23 01:10:29 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/?page=1&limit=5 "HTTP/1.1 200 OK"
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/ - 200
2025-11-23 01:10:30 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/?type=Deluxe%20Suite "HTTP/1.1 200 OK"
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/ - 200
2025-11-23 01:10:30 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/?capacity=2 "HTTP/1.1 200 OK"
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/id/1
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/id/1 - 200
2025-11-23 01:10:30 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/id/1 "HTTP/1.1 200 OK"
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/id/99999
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/id/99999 - 404
2025-11-23 01:10:30 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/id/99999 "HTTP/1.1 404 Not Found"
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/101
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/101 - 200
2025-11-23 01:10:30 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/101 "HTTP/1.1 200 OK"
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/INVALID
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/INVALID - 404
2025-11-23 01:10:30 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/INVALID "HTTP/1.1 404 Not Found"
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/available
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/available - 200
2025-11-23 01:10:30 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/available?from=2025-11-23&to=2025-11-25 "HTTP/1.1 200 OK"
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/available
2025-11-23 01:10:30 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/available - 500
2025-11-23 01:10:30 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/available?from=2025-11-25&to=2025-11-23 "HTTP/1.1 500 Internal Server Error"
2025-11-23 01:10:31 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/available
2025-11-23 01:10:31 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/available - 200
2025-11-23 01:10:31 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/available?from=2025-11-23&to=2025-11-25&roomId=1 "HTTP/1.1 200 OK"
2025-11-23 01:10:31 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/available
2025-11-23 01:10:31 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/available - 200
2025-11-23 01:10:31 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/available?from=2025-11-23&to=2025-11-25&roomId=1 "HTTP/1.1 200 OK"
2025-11-23 01:10:31 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/rooms/
2025-11-23 01:10:31 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/rooms/ - 200
2025-11-23 01:10:31 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/rooms/ "HTTP/1.1 200 OK"
2025-11-23 01:10:31 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/rooms/
2025-11-23 01:10:31 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/rooms/ - 403
2025-11-23 01:10:31 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/rooms/ "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:32 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/rooms/
2025-11-23 01:10:32 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/rooms/ - 403
2025-11-23 01:10:32 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/rooms/ "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:32 | INFO     | src.middleware.request_id | dispatch:13 | Request started: POST /api/rooms/
2025-11-23 01:10:32 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: POST /api/rooms/ - 400
2025-11-23 01:10:32 | INFO     | httpx | _send_single_request:1013 | HTTP Request: POST http://testserver/api/rooms/ "HTTP/1.1 400 Bad Request"
2025-11-23 01:10:32 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PUT /api/rooms/1
2025-11-23 01:10:32 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PUT /api/rooms/1 - 200
2025-11-23 01:10:32 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PUT http://testserver/api/rooms/1 "HTTP/1.1 200 OK"
2025-11-23 01:10:33 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PUT /api/rooms/99999
2025-11-23 01:10:33 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PUT /api/rooms/99999 - 404
2025-11-23 01:10:33 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PUT http://testserver/api/rooms/99999 "HTTP/1.1 404 Not Found"
2025-11-23 01:10:33 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PUT /api/rooms/1
2025-11-23 01:10:33 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PUT /api/rooms/1 - 403
2025-11-23 01:10:33 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PUT http://testserver/api/rooms/1 "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:33 | INFO     | src.middleware.request_id | dispatch:13 | Request started: DELETE /api/rooms/1
2025-11-23 01:10:33 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: DELETE /api/rooms/1 - 200
2025-11-23 01:10:33 | INFO     | httpx | _send_single_request:1013 | HTTP Request: DELETE http://testserver/api/rooms/1 "HTTP/1.1 200 OK"
2025-11-23 01:10:34 | INFO     | src.middleware.request_id | dispatch:13 | Request started: DELETE /api/rooms/99999
2025-11-23 01:10:34 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: DELETE /api/rooms/99999 - 404
2025-11-23 01:10:34 | INFO     | httpx | _send_single_request:1013 | HTTP Request: DELETE http://testserver/api/rooms/99999 "HTTP/1.1 404 Not Found"
2025-11-23 01:10:34 | INFO     | src.middleware.request_id | dispatch:13 | Request started: DELETE /api/rooms/1
2025-11-23 01:10:34 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: DELETE /api/rooms/1 - 403
2025-11-23 01:10:34 | INFO     | httpx | _send_single_request:1013 | HTTP Request: DELETE http://testserver/api/rooms/1 "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:34 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/1/booked-dates
2025-11-23 01:10:34 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/1/booked-dates - 200
2025-11-23 01:10:34 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/1/booked-dates "HTTP/1.1 200 OK"
2025-11-23 01:10:34 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/99999/booked-dates
2025-11-23 01:10:34 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/99999/booked-dates - 404
2025-11-23 01:10:34 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/99999/booked-dates "HTTP/1.1 404 Not Found"
2025-11-23 01:10:34 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/1/reviews
2025-11-23 01:10:34 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/1/reviews - 200
2025-11-23 01:10:35 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/1/reviews "HTTP/1.1 200 OK"
2025-11-23 01:10:35 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/99999/reviews
2025-11-23 01:10:35 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/99999/reviews - 404
2025-11-23 01:10:35 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/99999/reviews "HTTP/1.1 404 Not Found"
2025-11-23 01:10:35 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/rooms/amenities
2025-11-23 01:10:35 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/rooms/amenities - 200
2025-11-23 01:10:35 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/rooms/amenities "HTTP/1.1 200 OK"
2025-11-23 01:10:38 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/users/
2025-11-23 01:10:38 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/users/ - 200
2025-11-23 01:10:38 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/users/ "HTTP/1.1 200 OK"
2025-11-23 01:10:38 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/users/
2025-11-23 01:10:38 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/users/ - 403
2025-11-23 01:10:38 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/users/ "HTTP/1.1 403 Forbidden"
2025-11-23 01:10:39 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/users/
2025-11-23 01:10:39 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/users/ - 200
2025-11-23 01:10:39 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/users/?page=1&limit=10 "HTTP/1.1 200 OK"
2025-11-23 01:10:39 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/users/2
2025-11-23 01:10:39 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/users/2 - 200
2025-11-23 01:10:39 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/users/2 "HTTP/1.1 200 OK"
2025-11-23 01:10:40 | INFO     | src.middleware.request_id | dispatch:13 | Request started: GET /api/users/99999
2025-11-23 01:10:40 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: GET /api/users/99999 - 404
2025-11-23 01:10:40 | INFO     | httpx | _send_single_request:1013 | HTTP Request: GET http://testserver/api/users/99999 "HTTP/1.1 404 Not Found"
2025-11-23 01:10:40 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PUT /api/users/2
2025-11-23 01:10:40 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PUT /api/users/2 - 200
2025-11-23 01:10:40 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PUT http://testserver/api/users/2 "HTTP/1.1 200 OK"
2025-11-23 01:10:41 | INFO     | src.middleware.request_id | dispatch:13 | Request started: PUT /api/users/2
2025-11-23 01:10:41 | INFO     | src.middleware.request_id | dispatch:17 | Request completed: PUT /api/users/2 - 403
2025-11-23 01:10:41 | INFO     | httpx | _send_single_request:1013 | HTTP Request: PUT http://testserver/api/users/2 "HTTP/1.1 403 Forbidden"
