Files
orion/app/modules/hosting/routes/api/admin_services.py
Samir Boulahtit 8b147f53c6
Some checks failed
CI / pytest (push) Failing after 49m20s
CI / validate (push) Successful in 24s
CI / dependency-scanning (push) Successful in 33s
CI / docs (push) Has been skipped
CI / deploy (push) Has been skipped
CI / ruff (push) Successful in 10s
feat(hosting): add HostWizard platform module and fix migration chain
- Add complete hosting module (models, routes, schemas, services, templates, migrations)
- Add HostWizard platform to init_production seed (code=hosting, domain=hostwizard.lu)
- Fix cms_002 migration down_revision to z_unique_subdomain_domain
- Fix prospecting_001 migration to chain after cms_002 (remove branch label)
- Add hosting/prospecting version_locations to alembic.ini
- Fix admin_services delete endpoint to use proper response model
- Add hostwizard.lu to deployment docs (DNS, Caddy, Cloudflare)
- Add hosting and prospecting user journey docs to mkdocs nav

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:34:56 +01:00

74 lines
2.3 KiB
Python

# app/modules/hosting/routes/api/admin_services.py
"""
Admin API routes for client service management.
"""
import logging
from fastapi import APIRouter, Depends, Path
from sqlalchemy.orm import Session
from app.api.deps import get_current_admin_api
from app.core.database import get_db
from app.modules.hosting.schemas.client_service import (
ClientServiceCreate,
ClientServiceDeleteResponse,
ClientServiceResponse,
ClientServiceUpdate,
)
from app.modules.hosting.services.client_service_service import client_service_service
from app.modules.tenancy.schemas.auth import UserContext
router = APIRouter(prefix="/sites/{site_id}/services")
logger = logging.getLogger(__name__)
@router.get("", response_model=list[ClientServiceResponse])
def list_services(
site_id: int = Path(...),
db: Session = Depends(get_db),
current_admin: UserContext = Depends(get_current_admin_api),
):
"""List services for a hosted site."""
return client_service_service.get_for_site(db, site_id)
@router.post("", response_model=ClientServiceResponse)
def create_service(
data: ClientServiceCreate,
site_id: int = Path(...),
db: Session = Depends(get_db),
current_admin: UserContext = Depends(get_current_admin_api),
):
"""Create a new service for a hosted site."""
service = client_service_service.create(db, site_id, data.model_dump(exclude_none=True))
db.commit()
return service
@router.put("/{service_id}", response_model=ClientServiceResponse)
def update_service(
data: ClientServiceUpdate,
site_id: int = Path(...),
service_id: int = Path(...),
db: Session = Depends(get_db),
current_admin: UserContext = Depends(get_current_admin_api),
):
"""Update a client service."""
service = client_service_service.update(db, service_id, data.model_dump(exclude_none=True))
db.commit()
return service
@router.delete("/{service_id}", response_model=ClientServiceDeleteResponse)
def delete_service(
site_id: int = Path(...),
service_id: int = Path(...),
db: Session = Depends(get_db),
current_admin: UserContext = Depends(get_current_admin_api),
):
"""Delete a client service."""
client_service_service.delete(db, service_id)
db.commit()
return ClientServiceDeleteResponse(message="Service deleted")