se agregaron nuevas caracteristicas

This commit is contained in:
Carlos Tello
2026-08-13 23:07:01 -03:00
parent 1bfb808c79
commit d736db982e
23 changed files with 1244 additions and 100 deletions
+52
View File
@@ -0,0 +1,52 @@
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.database import get_db
from app.api.deps import require_admin
from app.models.models import User
from app.schemas.schemas import SystemSettingsResponse, SystemSettingsUpdate
from app.services.settings_service import get_all_settings, update_settings_service
router = APIRouter(prefix="/settings", tags=["System Settings"])
@router.get("", response_model=SystemSettingsResponse)
async def get_settings(
db: AsyncSession = Depends(get_db),
admin_user: User = Depends(require_admin)
):
"""Retrieve global system settings."""
settings_dict = await get_all_settings(db)
return {
"storage_root": settings_dict.get("storage_root", ""),
"global_quota_gb": int(settings_dict.get("global_quota_gb", 1000)),
"default_client_quota_gb": int(settings_dict.get("default_client_quota_gb", 100)),
"default_keep_daily": int(settings_dict.get("default_keep_daily", 7)),
"default_keep_weekly": int(settings_dict.get("default_keep_weekly", 4)),
"default_keep_monthly": int(settings_dict.get("default_keep_monthly", 12)),
}
@router.put("", response_model=SystemSettingsResponse)
async def update_settings(
payload: SystemSettingsUpdate,
db: AsyncSession = Depends(get_db),
admin_user: User = Depends(require_admin)
):
"""Update global system settings."""
# Convert Pydantic model to a dict of values (filtering out None)
updates = {k: v for k, v in payload.model_dump().items() if v is not None}
try:
settings_dict = await update_settings_service(db, updates)
except ValueError as e:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=str(e)
)
return {
"storage_root": settings_dict.get("storage_root", ""),
"global_quota_gb": int(settings_dict.get("global_quota_gb", 1000)),
"default_client_quota_gb": int(settings_dict.get("default_client_quota_gb", 100)),
"default_keep_daily": int(settings_dict.get("default_keep_daily", 7)),
"default_keep_weekly": int(settings_dict.get("default_keep_weekly", 4)),
"default_keep_monthly": int(settings_dict.get("default_keep_monthly", 12)),
}