# app/modules/cms/routes/pages/admin.py """ CMS Admin Page Routes (HTML rendering). Admin pages for managing platform and vendor content pages. """ from fastapi import APIRouter, Depends, Path, Request from fastapi.responses import HTMLResponse, RedirectResponse from sqlalchemy.orm import Session from app.api.deps import get_db, require_menu_access from app.templates_config import templates from app.modules.enums import FrontendType from app.modules.tenancy.models import User router = APIRouter() # ============================================================================ # CONTENT PAGES MANAGEMENT # ============================================================================ @router.get("/platform-homepage", include_in_schema=False) async def admin_platform_homepage_manager( request: Request, current_user: User = Depends(require_menu_access("platforms", FrontendType.ADMIN)), db: Session = Depends(get_db), ): """ Deprecated: Redirects to platforms page. Platform homepages are now managed via: - /admin/platforms → Select platform → Homepage button - Or directly: /admin/content-pages?platform_code={code}&slug=home """ return RedirectResponse(url="/admin/platforms", status_code=302) @router.get("/content-pages", response_class=HTMLResponse, include_in_schema=False) async def admin_content_pages_list( request: Request, current_user: User = Depends(require_menu_access("content-pages", FrontendType.ADMIN)), db: Session = Depends(get_db), ): """ Render content pages list. Shows all platform defaults and vendor overrides with filtering. """ return templates.TemplateResponse( "cms/admin/content-pages.html", { "request": request, "user": current_user, }, ) @router.get( "/content-pages/create", response_class=HTMLResponse, include_in_schema=False ) async def admin_content_page_create( request: Request, current_user: User = Depends(require_menu_access("content-pages", FrontendType.ADMIN)), db: Session = Depends(get_db), ): """ Render create content page form. Allows creating new platform defaults or vendor-specific pages. """ return templates.TemplateResponse( "cms/admin/content-page-edit.html", { "request": request, "user": current_user, "page_id": None, # Indicates this is a create operation }, ) @router.get( "/content-pages/{page_id}/edit", response_class=HTMLResponse, include_in_schema=False, ) async def admin_content_page_edit( request: Request, page_id: int = Path(..., description="Content page ID"), current_user: User = Depends(require_menu_access("content-pages", FrontendType.ADMIN)), db: Session = Depends(get_db), ): """ Render edit content page form. Allows editing existing platform or vendor content pages. """ return templates.TemplateResponse( "cms/admin/content-page-edit.html", { "request": request, "user": current_user, "page_id": page_id, }, )