Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 9aae8d25

Přidáno uživatelem Matěj Zeman před asi 2 roky(ů)

re #9575 Added filter over Usernames in /api/v1/logs-web and endpoint with Form for creating a license.

Zobrazit rozdíly:

server/sql_app/api/licenses.py
1 1
from typing import List
2 2

  
3
from fastapi import Depends, FastAPI, HTTPException, APIRouter
3
from fastapi import Depends, FastAPI, HTTPException, APIRouter, Form
4 4
from sqlalchemy.orm import Session
5 5
from datetime import date
6 6
from sql_app import crud, models, schemas
......
25 25
        db.close()
26 26

  
27 27

  
28
@licenses.get("/license-create", response_class=HTMLResponse)
29
async def licenses_create_web(request: Request):
30
    return templates.TemplateResponse("license_create.html", {"request": request})
31

  
32

  
28 33
@licenses.get("/licenses-web", response_class=HTMLResponse)
29
async def read_pcs(request: Request, skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
34
async def licenses_web(request: Request, skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
30 35
    licenses = crud.get_licenses(db, skip=skip, limit=limit)
31 36
    return templates.TemplateResponse("licenses.html", {"request": request, "licenses": licenses})
32 37

  
33 38

  
34
@licenses.post("/license", response_model=schemas.License)
35
def create_license(license: schemas.LicenseCreate, db: Session = Depends(get_db)):
36
    print(crud.create_license(db=db, name=license.name, expdate=license.expiration_date))
39
@licenses.post("/licenses-web", response_class=HTMLResponse)
40
def create_license(request: Request, name: str = Form(...), expdate: date = Form(...), skip: int = 0, limit: int = 100,
41
                   db: Session = Depends(get_db)):
42
    db_license = crud.create_license(db, name, expdate)
43
    if db_license is None:
44
        print("something went wrong")
45
    licenses = crud.get_licenses(db, skip=skip, limit=limit)
46
    return templates.TemplateResponse("licenses.html", {"request": request, "licenses": licenses})
37 47

  
38 48

  
39 49
@licenses.get("/licenses", response_model=List[schemas.License])
server/sql_app/api/usb_logs.py
27 27
@usblogs.get("/logs-web", response_class=HTMLResponse)
28 28
async def read_logs(request: Request, skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
29 29
    logs = crud.get_logs(db, skip=skip, limit=limit)
30
    return templates.TemplateResponse("logs.html", {"request": request, "logs": logs})
30
    pcs = []
31
    for log in logs:
32
        if log.pc_id not in pcs:
33
            pcs.append(log.pc_id)
34
    pc_obj = crud.find_pcs(db, pcs)
35
    return templates.TemplateResponse("logs.html", {"request": request, "logs": logs, "pcs": pc_obj})
36

  
37

  
38
@usblogs.post("/logs-web", response_class=HTMLResponse)
39
async def filter_logs(request: Request, pc: str = Form(...), skip: int = 0, limit: int = 100,
40
                      db: Session = Depends(get_db)):
41
    logs_temp = crud.get_logs(db, skip=skip, limit=limit)
42
    pcs = []
43
    logs = []
44
    for log in logs_temp:
45
        if log.pc_id not in pcs:
46
            pcs.append(log.pc_id)
47
        if pc != "all":
48
            if log.pc_id == int(pc):
49
                logs.append(log)
50
    if pc == "all":
51
        logs = logs_temp
52
    pc_obj = crud.find_pcs(db, pcs)
53
    return templates.TemplateResponse("logs.html", {"request": request, "logs": logs, "pcs": pc_obj})
31 54

  
32 55

  
33 56
@usblogs.post("/usb-logs", response_model=schemas.USBLog)
server/sql_app/main.py
17 17
'''
18 18
if __name__ == "__main__":
19 19
    uvicorn.run(app, host="192.168.0.22", port=8000)
20
'''
20
'''
server/templates/licenses/license_create.html
1
<!DOCTYPE html>
2
<html lang="en">
3
<head>
4
    <meta charset="UTF-8">
5
    <title>Create a License</title>
6
</head>
7
<body>
8
<form action="/api/v1/licenses-web" method="post">
9
  <label for="name">Name:</label><br>
10
  <input type="text" id="name" name="name"><br><br>
11
    <label for="expdate">Expiration Date</label>
12
  <input type="date" id="expdate" name="expdate">
13
  <input type="submit" value="Submit">
14
</form>
15
</body>
16
</html>
server/templates/usb-logs/logs.html
3 3
    <title>Logs Details</title>
4 4
</head>
5 5
<body>
6
<form action="/api/v1/logs-web/" method="post">
7
  <label for="pc">PC:</label>
8
  <select id="pc" name="pc">
9
      <option value="all">all</option>
10
      {% for pc in pcs %}
11
    <option value={{pc.id}}>{{pc.username}}</option>
12
      {% endfor %}
13
  </select>
14
  <input type="submit" value="Filter">
15
</form>
6 16
    <table>
7 17
    <TR>
8 18
        <TH>ID</TH>

Také k dispozici: Unified diff