initial webapp draft
This commit is contained in:
commit
4f2723b767
22 changed files with 713 additions and 0 deletions
62
main.py
Normal file
62
main.py
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
# main.py
|
||||
import os
|
||||
import shutil
|
||||
from fastapi import FastAPI, UploadFile, File, Request
|
||||
from fastapi.responses import HTMLResponse
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from cost_calculator import allowed_file, analyze_pdf, get_rate_black, get_rate_color, UPLOAD_FOLDER
|
||||
|
||||
app = FastAPI()
|
||||
templates = Jinja2Templates(directory="templates")
|
||||
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
|
||||
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
|
||||
|
||||
@app.get("/", response_class=HTMLResponse)
|
||||
async def welcome(request: Request):
|
||||
return templates.TemplateResponse("landing.html", {"request": request})
|
||||
|
||||
|
||||
@app.get("/about", response_class=HTMLResponse)
|
||||
async def about(request: Request):
|
||||
return templates.TemplateResponse("about.html", {"request": request})
|
||||
|
||||
|
||||
@app.get("/cost", response_class=HTMLResponse)
|
||||
async def cost_dashboard(request: Request):
|
||||
return templates.TemplateResponse(
|
||||
"cost-calculator.html",
|
||||
{
|
||||
"request": request,
|
||||
"rate_black": get_rate_black(),
|
||||
"rate_color": get_rate_color()
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@app.post("/upload")
|
||||
async def upload_file(request: Request, file: UploadFile = File(...)):
|
||||
if not allowed_file(file.filename):
|
||||
return templates.TemplateResponse(
|
||||
"cost-calculator.html",
|
||||
{"request": request, "error": "Unsupported file type. Only PDF allowed."},
|
||||
)
|
||||
|
||||
path = os.path.join(UPLOAD_FOLDER, file.filename)
|
||||
with open(path, "wb") as buffer:
|
||||
shutil.copyfileobj(file.file, buffer)
|
||||
|
||||
result = analyze_pdf(path)
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"result.html",
|
||||
{
|
||||
"request": request,
|
||||
"result": result,
|
||||
"rate_black": get_rate_black(),
|
||||
"rate_color": get_rate_color()
|
||||
},
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue