feat(admin): /admin/material-files lists files in the material volume
This commit is contained in:
20
app/admin.py
20
app/admin.py
@@ -1,15 +1,35 @@
|
||||
import csv
|
||||
import io
|
||||
from pathlib import Path
|
||||
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
from fastapi.responses import Response
|
||||
|
||||
from app.config import get_settings
|
||||
from app.db import list_leads, stats
|
||||
from app.security import require_admin
|
||||
|
||||
router = APIRouter(prefix="/admin", tags=["admin"])
|
||||
|
||||
|
||||
@router.get("/material-files")
|
||||
def admin_material_files(_user: str = Depends(require_admin)):
|
||||
"""Lista los archivos en el directorio material/ con sus tamaños."""
|
||||
material_dir = Path(get_settings().material_dir)
|
||||
if not material_dir.exists():
|
||||
return {"material_dir": str(material_dir), "exists": False, "files": []}
|
||||
files = []
|
||||
for path in sorted(material_dir.iterdir()):
|
||||
if path.is_file():
|
||||
size = path.stat().st_size
|
||||
files.append({
|
||||
"name": path.name,
|
||||
"size_bytes": size,
|
||||
"size_mb": round(size / (1024 * 1024), 2),
|
||||
})
|
||||
return {"material_dir": str(material_dir), "exists": True, "files": files}
|
||||
|
||||
|
||||
@router.get("/leads.json")
|
||||
def admin_leads_json(
|
||||
_user: str = Depends(require_admin),
|
||||
|
||||
Reference in New Issue
Block a user