# app/modules/orders/routes/pages/storefront.py """ Orders Storefront Page Routes (HTML rendering). Storefront (customer shop) pages for order history: - Orders list - Order detail """ import logging from fastapi import APIRouter, Depends, Path, Request from fastapi.responses import HTMLResponse from sqlalchemy.orm import Session from app.api.deps import get_current_customer_from_cookie_or_header, get_db from app.modules.core.utils.page_context import get_storefront_context from app.modules.customers.models import Customer from app.templates_config import templates logger = logging.getLogger(__name__) router = APIRouter() # ============================================================================ # CUSTOMER ACCOUNT - ORDERS (Authenticated) # ============================================================================ @router.get("/account/orders", response_class=HTMLResponse, include_in_schema=False) async def shop_orders_page( request: Request, current_customer: Customer = Depends(get_current_customer_from_cookie_or_header), db: Session = Depends(get_db), ): """ Render customer orders history page. Shows all past and current orders. Requires customer authentication. """ logger.debug( "[STOREFRONT] shop_orders_page REACHED", extra={ "path": request.url.path, "store": getattr(request.state, "store", "NOT SET"), "context": getattr(request.state, "context_type", "NOT SET"), }, ) return templates.TemplateResponse( "orders/storefront/orders.html", get_storefront_context(request, db=db, user=current_customer), ) @router.get( "/account/orders/{order_id}", response_class=HTMLResponse, include_in_schema=False, ) async def shop_order_detail_page( request: Request, order_id: int = Path(..., description="Order ID"), current_customer: Customer = Depends(get_current_customer_from_cookie_or_header), db: Session = Depends(get_db), ): """ Render customer order detail page. Shows detailed order information and tracking. Requires customer authentication. """ logger.debug( "[STOREFRONT] shop_order_detail_page REACHED", extra={ "path": request.url.path, "order_id": order_id, "store": getattr(request.state, "store", "NOT SET"), "context": getattr(request.state, "context_type", "NOT SET"), }, ) return templates.TemplateResponse( "orders/storefront/order-detail.html", get_storefront_context(request, db=db, user=current_customer, order_id=order_id), )