from fastapi import APIRouter, Request, Depends from fastapi.responses import RedirectResponse from fastapi.templating import Jinja2Templates from sqlalchemy.orm import Session from web.auth import get_current_user from web.database import get_db from web.models import User, EvotorConnection, VkConnection router = APIRouter() templates = Jinja2Templates(directory="web/templates") @router.get("/connections") def connections_page( request: Request, db: Session = Depends(get_db), user: User | None = Depends(get_current_user), ): if not user: return RedirectResponse("/login", 303) evotor = db.query(EvotorConnection).filter(EvotorConnection.user_id == user.id).first() vk = db.query(VkConnection).filter(VkConnection.user_id == user.id).first() connections = [ { "name": "Эвотор", "icon": "bi-shop", "connected": evotor is not None, "is_online": evotor.is_online if evotor else False, "last_checked_at": evotor.last_checked_at if evotor else None, "details": evotor.store_name if evotor else None, "connect_url": "/evotor/connect", "disconnect_url": "/evotor/disconnect", }, { "name": "ВКонтакте", "icon": "bi-chat-dots", "connected": vk is not None, "is_online": vk.is_online if vk else False, "last_checked_at": vk.last_checked_at if vk else None, "details": f"{vk.first_name} {vk.last_name}".strip() if vk and vk.first_name else None, "connect_url": "/vk", "disconnect_url": "/vk/disconnect", }, ] return templates.TemplateResponse("connections.html", { "request": request, "user": user, "connections": connections, })