-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
72 lines (56 loc) · 2.03 KB
/
main.py
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
"""Backend service for Clearance Assignment functionality"""
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.middleware.cors import CORSMiddleware
from crud.clearances import router as clearances_router
from crud.assignments import router as assignments_router
from crud.audit import router as audit_router
from crud.personnel import router as personnel_router
from crud.liaison import router as liaison_router
from models.scheduler_framework import ServiceScheduler
from util.ccure_api import CcureApi
DESCRIPTION = """Backend service for Clearance Assignment functionality"""
VERSION = "2023-04-21"
def create_app():
"""Set up a FastAPI application instance"""
fastapi_app = FastAPI(
title="Clearance Service",
description=DESCRIPTION,
version=VERSION
)
fastapi_app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
return fastapi_app
app = create_app()
app.include_router(personnel_router, prefix='/personnel')
app.include_router(clearances_router, prefix='/clearances')
app.include_router(assignments_router, prefix='/assignments')
app.include_router(liaison_router, prefix='/liaison')
app.include_router(audit_router, prefix='/audit')
@app.get("/", response_class=HTMLResponse)
def default(request: Request):
"""Default landing page, link to documentation"""
base_url = str(request.url)
docs_url = base_url + "docs"
return f"""
<h3>Clearance Service</h3>
Go to <a href={docs_url}><code>/docs</code></a> in your browser
to see the documentation.
"""
@app.on_event("startup")
def startup_db_client():
"""Start the scheduler"""
scheduler = ServiceScheduler()
scheduler.start_scheduler()
print("Started scheduler")
@app.on_event("shutdown")
def logout_ccure_session():
"""Log out of the CCure session"""
response = CcureApi.logout()
if response.get("success"):
print("Ending CCure session")