Projekt

Obecné

Profil

Stáhnout (2.67 KB) Statistiky
| Větev: | Tag: | Revize:
1 b6f0e019 Matej Zeman
from typing import List
2
from fastapi import Depends, FastAPI, HTTPException, APIRouter, Form
3
from sqlalchemy.orm import Session
4
from sql_app import crud, models, schemas
5
from ..database import SessionLocal, engine
6
from fastapi import FastAPI, Request
7 2fe004b1 Matej Zeman
from fastapi.responses import HTMLResponse, RedirectResponse
8
from fastapi_jwt_auth import AuthJWT
9 b6f0e019 Matej Zeman
from fastapi.staticfiles import StaticFiles
10
from fastapi.templating import Jinja2Templates
11
12
models.Base.metadata.create_all(bind=engine)
13
14 4911f0ea Matej Zeman
# Path to html templates used in this file
15 4babde6c Matej Zeman
templates = Jinja2Templates(directory="templates/pcs")
16 4911f0ea Matej Zeman
17
# prefix used for all endpoints in this file
18 af6f5886 Matěj Zeman
pcs_web = APIRouter(prefix="")
19 b6f0e019 Matej Zeman
20
21
# Dependency
22
def get_db():
23
    db = SessionLocal()
24
    try:
25
        yield db
26
    finally:
27
        db.close()
28
29
30
@pcs_web.get("/pcs-web", response_class=HTMLResponse)
31 2fe004b1 Matej Zeman
async def read_pcs(request: Request, skip: int = 0, limit: int = 100, db: Session = Depends(get_db),
32
                   Authorize: AuthJWT = Depends()):
33 4911f0ea Matej Zeman
    """
34
    Returns template with all pcs currently saved in database
35
    """
36 2fe004b1 Matej Zeman
    Authorize.jwt_optional()
37
    current_user = Authorize.get_jwt_subject()
38 b6f0e019 Matej Zeman
    pcs = crud.get_pcs(db, skip=skip, limit=limit)
39 2fe004b1 Matej Zeman
    if current_user == "admin":
40 7fe7be79 zemanm98@students.zcu.cz
        return templates.TemplateResponse("pcs.html", {"request": request, "pcs": pcs, "user": current_user})
41 2fe004b1 Matej Zeman
    else:
42 7fe7be79 zemanm98@students.zcu.cz
        current_user = "guest"
43
        return templates.TemplateResponse("pcs_normal.html", {"request": request, "pcs": pcs, "user": current_user})
44 eaf8ace4 Matej Zeman
45
46
@pcs_web.get("/pc-team/{pc_id}", response_class=HTMLResponse)
47 5dc6d077 Matej Zeman
async def connect_pc_team(request: Request, pc_id: int, db: Session = Depends(get_db),
48
                          Authorize: AuthJWT = Depends()):
49 4911f0ea Matej Zeman
    """
50
    Returns template with Form for connecting pc with team
51
    """
52 5dc6d077 Matej Zeman
    Authorize.jwt_optional()
53
    current_user = Authorize.get_jwt_subject()
54
    if current_user != "admin":
55
        return RedirectResponse(url=f"/logs-web", status_code=303)
56 eaf8ace4 Matej Zeman
    pc = crud.get_pc(db, pc_id)
57
    teams = crud.get_teams(db, 0, 100)
58
    return templates.TemplateResponse("pcteam.html",
59
                                      {"request": request, "pc": pc, "teams": teams})
60
61
62 7fe7be79 zemanm98@students.zcu.cz
@pcs_web.post("/pcs-web/{pc_id}")
63 5dc6d077 Matej Zeman
async def connect_post(pc_id: int, team: str = Form(...), db: Session = Depends(get_db),
64
                       Authorize: AuthJWT = Depends()):
65 4911f0ea Matej Zeman
    """
66
    Endpoint called from within form for connecting pc with team. Updates certain pc with new team.
67
    """
68 5dc6d077 Matej Zeman
    Authorize.jwt_optional()
69
    current_user = Authorize.get_jwt_subject()
70
    if current_user != "admin":
71
        return RedirectResponse(url=f"/logs-web", status_code=303)
72 eaf8ace4 Matej Zeman
    old_pc = crud.update_pc(db, pc_id, team)
73 7fe7be79 zemanm98@students.zcu.cz
    return RedirectResponse(url=f"/pcs-web", status_code=303)