release: 2901262102
This commit is contained in:
@@ -1,13 +1,16 @@
|
||||
from typing import Any, Dict, List, Optional
|
||||
from datetime import datetime, timedelta, timezone
|
||||
import os
|
||||
|
||||
from fastapi import APIRouter, HTTPException, Depends, UploadFile, File
|
||||
|
||||
from ..auth import require_admin
|
||||
from ..auth import require_admin, get_current_user
|
||||
from ..config import settings as env_settings
|
||||
from ..db import (
|
||||
delete_setting,
|
||||
get_all_users,
|
||||
get_cached_requests,
|
||||
get_cached_requests_count,
|
||||
get_request_cache_overview,
|
||||
get_request_cache_missing_titles,
|
||||
get_request_cache_stats,
|
||||
@@ -480,6 +483,40 @@ async def requests_cache(limit: int = 50) -> Dict[str, Any]:
|
||||
return {"rows": rows}
|
||||
|
||||
|
||||
@router.get("/requests/all")
|
||||
async def requests_all(
|
||||
take: int = 50,
|
||||
skip: int = 0,
|
||||
days: Optional[int] = None,
|
||||
user: Dict[str, str] = Depends(get_current_user),
|
||||
) -> Dict[str, Any]:
|
||||
if user.get("role") != "admin":
|
||||
raise HTTPException(status_code=403, detail="Forbidden")
|
||||
take = max(1, min(int(take or 50), 200))
|
||||
skip = max(0, int(skip or 0))
|
||||
since_iso = None
|
||||
if days is not None and int(days) > 0:
|
||||
since_iso = (datetime.now(timezone.utc) - timedelta(days=int(days))).isoformat()
|
||||
rows = get_cached_requests(limit=take, offset=skip, since_iso=since_iso)
|
||||
total = get_cached_requests_count(since_iso=since_iso)
|
||||
results = []
|
||||
for row in rows:
|
||||
status = row.get("status")
|
||||
results.append(
|
||||
{
|
||||
"id": row.get("request_id"),
|
||||
"title": row.get("title"),
|
||||
"year": row.get("year"),
|
||||
"type": row.get("media_type"),
|
||||
"status": status,
|
||||
"statusLabel": requests_router._status_label(status),
|
||||
"requestedBy": row.get("requested_by"),
|
||||
"createdAt": row.get("created_at"),
|
||||
}
|
||||
)
|
||||
return {"results": results, "total": total, "take": take, "skip": skip}
|
||||
|
||||
|
||||
@router.post("/branding/logo")
|
||||
async def upload_branding_logo(file: UploadFile = File(...)) -> Dict[str, Any]:
|
||||
return await save_branding_image(file)
|
||||
|
||||
Reference in New Issue
Block a user