FIX: Исправление вызовов TemplateResponse под требования Starlette 0.38+

This commit is contained in:
Admin 2026-06-26 21:27:30 +04:00
parent 02d793d178
commit f9116f14e9

View file

@ -165,8 +165,8 @@ async def dashboard(request: Request, username: str = Depends(get_current_admin)
upcoming_events = (await session.execute(select(func.count(Event.id)).where(Event.is_active == True))).scalar()
pending_count = (await session.execute(select(func.count(VerificationRequest.id)).where(VerificationRequest.status == 'pending'))).scalar()
return templates.TemplateResponse("dashboard.html", {
"request": request, "username": username,
return templates.TemplateResponse(request=request, name="dashboard.html", context={
"username": username,
"stats": {
"users": users_count, "verified": verified_count,
"messages": messages_count, "ads": active_ads,
@ -208,8 +208,8 @@ async def users_page(request: Request, search: str = "", filter: str = "", usern
total_count = (await session.execute(select(func.count(User.user_id)))).scalar()
verified_count = (await session.execute(select(func.count(User.user_id)).where(User.verified == True))).scalar()
return templates.TemplateResponse("users.html", {
"request": request, "username": username, "users": users, "search": search, "current_filter": filter,
return templates.TemplateResponse(request=request, name="users.html", context={
"username": username, "users": users, "search": search, "current_filter": filter,
"stats": {"total": total_count, "verified": verified_count, "unverified": total_count - verified_count, "ig": len(ig_user_ids)},
"ig_user_ids": ig_user_ids
})
@ -238,7 +238,7 @@ async def verification_page(request: Request, username: str = Depends(get_curren
async with AsyncSessionLocal() as session:
pending = (await session.execute(select(VerificationRequest).where(VerificationRequest.status == 'pending').order_by(VerificationRequest.created_at.desc()))).scalars().all()
unverified = (await session.execute(select(User).where(User.verified == False).order_by(User.join_date.desc()).limit(50))).scalars().all()
return templates.TemplateResponse("verification.html", {"request": request, "username": username, "pending_requests": pending, "unverified_users": unverified})
return templates.TemplateResponse(request=request, name="verification.html", context={"username": username, "pending_requests": pending, "unverified_users": unverified})
@app.post("/api/verification/{req_id}/approve")
async def api_approve_verification(req_id: int, username: str = Depends(get_current_admin)):
@ -342,31 +342,31 @@ async def api_toggle_ai(user_id: int, username: str = Depends(get_current_admin)
async def phones_page(request: Request, username: str = Depends(get_current_admin)):
async with AsyncSessionLocal() as session:
services = (await session.execute(select(Service).order_by(Service.category, Service.name))).scalars().all()
return templates.TemplateResponse("phones.html", {"request": request, "username": username, "services": services})
return templates.TemplateResponse(request=request, name="phones.html", context={"username": username, "services": services})
@app.get("/ads", response_class=HTMLResponse)
async def ads_page(request: Request, username: str = Depends(get_current_admin)):
async with AsyncSessionLocal() as session:
ads = (await session.execute(select(Ad).order_by(Ad.created_at.desc()).limit(100))).scalars().all()
return templates.TemplateResponse("ads.html", {"request": request, "username": username, "ads": ads})
return templates.TemplateResponse(request=request, name="ads.html", context={"username": username, "ads": ads})
@app.get("/polls", response_class=HTMLResponse)
async def polls_page(request: Request, username: str = Depends(get_current_admin)):
async with AsyncSessionLocal() as session:
polls = (await session.execute(select(Poll).order_by(Poll.created_at.desc()).limit(50))).scalars().all()
return templates.TemplateResponse("polls.html", {"request": request, "username": username, "polls": polls})
return templates.TemplateResponse(request=request, name="polls.html", context={"username": username, "polls": polls})
@app.get("/events", response_class=HTMLResponse)
async def events_page(request: Request, username: str = Depends(get_current_admin)):
async with AsyncSessionLocal() as session:
events = (await session.execute(select(Event).order_by(Event.event_date.desc()).limit(50))).scalars().all()
return templates.TemplateResponse("events.html", {"request": request, "username": username, "events": events})
return templates.TemplateResponse(request=request, name="events.html", context={"username": username, "events": events})
@app.get("/schedules", response_class=HTMLResponse)
async def schedules_page(request: Request, username: str = Depends(get_current_admin)):
async with AsyncSessionLocal() as session:
schedules = (await session.execute(select(Schedule).order_by(Schedule.start_time.desc()))).scalars().all()
return templates.TemplateResponse("schedules.html", {"request": request, "username": username, "schedules": schedules})
return templates.TemplateResponse(request=request, name="schedules.html", context={"username": username, "schedules": schedules})
# ============================================================================
# РАССЫЛКИ (SMART BROADCAST)
@ -390,7 +390,7 @@ async def broadcast_page(request: Request, username: str = Depends(get_current_a
'broadcast_type': b.broadcast_type or 'regular',
'is_reminder_sent': b.is_reminder_sent
})
return templates.TemplateResponse("broadcast.html", {"request": request, "username": username, "broadcasts": broadcasts_data, "artifacts": artifacts})
return templates.TemplateResponse(request=request, name="broadcast.html", context={"username": username, "broadcasts": broadcasts_data, "artifacts": artifacts})
@app.post("/api/broadcast/create")
async def api_create_broadcast(
@ -495,7 +495,7 @@ async def api_broadcast_non_readers(broadcast_id: int, username: str = Depends(g
async def scheduled_posts_page(request: Request, username: str = Depends(get_current_admin)):
async with AsyncSessionLocal() as session:
artifacts = (await session.execute(select(Artifact).order_by(Artifact.filename))).scalars().all()
return templates.TemplateResponse("scheduled_posts.html", {"request": request, "username": username, "artifacts": artifacts})
return templates.TemplateResponse(request=request, name="scheduled_posts.html", context={"username": username, "artifacts": artifacts})
@app.get("/api/scheduled_posts/list")
async def api_list_scheduled_posts(username: str = Depends(get_current_admin)):
@ -565,7 +565,7 @@ async def digests_page(request: Request, username: str = Depends(get_current_adm
pending = (await session.execute(stmt_pending)).scalars().all()
stmt_archive = select(Digest).where(Digest.status.in_(['approved', 'sent', 'rejected'])).order_by(Digest.created_at.desc()).limit(20)
archive = (await session.execute(stmt_archive)).scalars().all()
return templates.TemplateResponse("digests.html", {"request": request, "username": username, "pending_digests": pending, "archive_digests": archive})
return templates.TemplateResponse(request=request, name="digests.html", context={"username": username, "pending_digests": pending, "archive_digests": archive})
@app.post("/api/digest/generate")
async def api_generate_digest(username: str = Depends(get_current_admin)):
@ -589,7 +589,7 @@ async def api_generate_digest(username: str = Depends(get_current_admin)):
@app.get("/files", response_class=HTMLResponse)
async def files_page(request: Request, username: str = Depends(get_current_admin)):
return templates.TemplateResponse("files.html", {"request": request, "username": username})
return templates.TemplateResponse(request=request, name="files.html", context={"username": username})
@app.get("/api/files/list")
async def api_list_files(username: str = Depends(get_current_admin)):
@ -637,7 +637,7 @@ async def export_page(request: Request, username: str = Depends(get_current_admi
async with AsyncSessionLocal() as session:
exporter = ChatExporter(session)
stats = await exporter.get_stats()
return templates.TemplateResponse("export.html", {"request": request, "username": username, "export_stats": stats, "fmt_local": fmt_local})
return templates.TemplateResponse(request=request, name="export.html", context={"username": username, "export_stats": stats, "fmt_local": fmt_local})
@app.get("/api/export/json")
async def api_export_json(username: str = Depends(get_current_admin)):
@ -690,8 +690,8 @@ async def emails_page(request: Request, username: str = Depends(get_current_admi
except:
last_sync_time = datetime.fromtimestamp(sync_time_file.stat().st_mtime, tz=timezone.utc)
return templates.TemplateResponse("emails.html", {
"request": request, "username": username, "audit_data": audit_data,
return templates.TemplateResponse(request=request, name="emails.html", context={
"username": username, "audit_data": audit_data,
"last_log": last_log, "latest_emails": latest_emails,
"has_master_pdf": master_pdf_path.exists(), "last_update": last_update,
"last_sync_time": last_sync_time, "fmt_local": fmt_local
@ -744,7 +744,7 @@ async def get_infra_page(request: Request, username: str = Depends(get_current_a
"server_name": r.server_name
})
return templates.TemplateResponse("infra.html", {"request": request, "username": username, "speedtests": speedtests})
return templates.TemplateResponse(request=request, name="infra.html", context={"username": username, "speedtests": speedtests})
@app.post("/api/infra/run_speedtest")
async def api_run_speedtest(username: str = Depends(get_current_admin)):