"""Routes invitations.""" import secrets from datetime import datetime, timedelta, timezone from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from app.core.database import get_db from app.core.config import settings from app.core.security import require_executif from app.models.invitation import Invitation from app.schemas.schemas import InvitationOut router = APIRouter(prefix="/invitations", tags=["Invitations"]) @router.post("/", response_model=InvitationOut) async def creer_invitation( executif=Depends(require_executif), db: AsyncSession = Depends(get_db), ): """Générer un code d'invitation (expire après 48h).""" code = secrets.token_hex(6).upper() # 12 caractères hex invitation = Invitation( groupe_id=executif.groupe_id, code=code, cree_par=executif.id, expire_le=datetime.now(timezone.utc) + timedelta(hours=settings.INVITATION_EXPIRE_HOURS), ) db.add(invitation) await db.flush() return InvitationOut.model_validate(invitation)