-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpages.py
More file actions
82 lines (65 loc) · 3.21 KB
/
Copy pathpages.py
File metadata and controls
82 lines (65 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
from fastapi import APIRouter, Request, Form, File, UploadFile, Depends
from fastapi.responses import HTMLResponse, PlainTextResponse
from fastapi.templating import Jinja2Templates
from pathlib import Path
from sqlalchemy.orm import Session
import os
from .. import utils, crud
from ..database import SessionLocal
router = APIRouter()
templates = Jinja2Templates(directory=os.path.abspath(os.path.join(os.path.dirname(__file__), '../../main/templates')))
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@router.get("/", response_class=HTMLResponse)
async def home(request: Request):
return templates.TemplateResponse("graph_visualization/home.html", {"request": request, "home": 1})
@router.get("/about", response_class=HTMLResponse)
async def about(request: Request):
return templates.TemplateResponse("graph_visualization/about.html", {"request": request, "home": 1})
@router.get("/manual", response_class=HTMLResponse)
async def manual(request: Request):
return templates.TemplateResponse("graph_visualization/manual.html", {"request": request, "home": 1})
@router.get("/graph/json-editor/", response_class=HTMLResponse)
async def json_editor(request: Request):
return templates.TemplateResponse("graph_visualization/jsonEditor.html", {"request": request})
@router.get("/about/license.txt", response_class=PlainTextResponse)
async def license_page():
license_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../main/templates/graph_visualization/license.txt'))
with open(license_path) as f:
content = f.read()
return PlainTextResponse(content)
@router.get("/graph", response_class=HTMLResponse)
async def graph_page_get(request: Request, g6: str = None, db: Session = Depends(get_db)):
context = {"request": request}
if g6:
graphData = utils.convertGraph(g6)
context['data'] = graphData
context["commands"] = crud.get_commands(db)
return templates.TemplateResponse("graph_visualization/graph.html", context)
@router.post("/graph", response_class=HTMLResponse)
async def graph_page_post(request: Request, text: str = Form(None), file: UploadFile = File(None), radio: str = Form(...), db: Session = Depends(get_db)):
context = {"request": request}
data = ""
if file and file.filename:
contents = await file.read()
data = contents.decode("utf-8")
elif text:
data = text
else:
return templates.TemplateResponse("graph_visualization/error.html", {"request": request, "message": "No data provided"})
graphData = utils.convertGraph(data)
if graphData == "error":
return templates.TemplateResponse("graph_visualization/error.html", {"request": request, "message": "Invalid graph format"})
context['data'] = graphData
context["commands"] = crud.get_commands(db)
if radio == "2D":
return templates.TemplateResponse("graph_visualization/graph.html", context)
else:
return templates.TemplateResponse("graph_visualization/graph3d.html", context)
@router.get("/graph3d", response_class=HTMLResponse)
async def graph_page_3d(request: Request):
return templates.TemplateResponse("graph_visualization/graph3d.html", {"request": request})