- Add /connections page showing all integrations with online/offline status - Add background health checker that polls Evotor API every 10 minutes - Add is_online and last_checked_at fields to evotor_connections table - Replace Evotor navbar link with unified Connections link - Redirect connect/disconnect flows to /connections - Add Alembic migration for new columns Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
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
|
|
|
|
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()
|
|
|
|
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",
|
|
}
|
|
]
|
|
|
|
return templates.TemplateResponse("connections.html", {
|
|
"request": request,
|
|
"user": user,
|
|
"connections": connections,
|
|
})
|