diff --git a/web/app.py b/web/app.py index 86842f2..f73bd49 100644 --- a/web/app.py +++ b/web/app.py @@ -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)):