se agregaron nuevas caracteristicas
This commit is contained in:
@@ -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)),
|
||||
}
|
||||
Reference in New Issue
Block a user