Files
evo-sync/web/routes/connections.py

54 lines
1.8 KiB
Python
Raw Normal View History

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,
})