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 csv
|
||||||
import io
|
import io
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from fastapi import APIRouter, Depends, Query
|
from fastapi import APIRouter, Depends, Query
|
||||||
from fastapi.responses import Response
|
from fastapi.responses import Response
|
||||||
|
|
||||||
|
from app.config import get_settings
|
||||||
from app.db import list_leads, stats
|
from app.db import list_leads, stats
|
||||||
from app.security import require_admin
|
from app.security import require_admin
|
||||||
|
|
||||||
router = APIRouter(prefix="/admin", tags=["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")
|
@router.get("/leads.json")
|
||||||
def admin_leads_json(
|
def admin_leads_json(
|
||||||
_user: str = Depends(require_admin),
|
_user: str = Depends(require_admin),
|
||||||
|
|||||||
Reference in New Issue
Block a user