Ajustes gerais: overlay visual, validação por banco e limpeza segura em homologação
This commit is contained in:
45
app/main.py
45
app/main.py
@@ -4,9 +4,12 @@ from fastapi.templating import Jinja2Templates
|
||||
from fastapi.responses import HTMLResponse, JSONResponse
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
import os, shutil
|
||||
from sqlalchemy import text
|
||||
from fastapi import Depends
|
||||
from fastapi.responses import StreamingResponse
|
||||
from io import BytesIO
|
||||
import pandas as pd
|
||||
from app.models import ParametrosFormula
|
||||
from sqlalchemy.future import select
|
||||
from app.database import AsyncSessionLocal
|
||||
from app.models import Fatura
|
||||
@@ -16,6 +19,7 @@ from app.processor import (
|
||||
status_arquivos,
|
||||
limpar_arquivos_processados
|
||||
)
|
||||
from app.parametros import router as parametros_router
|
||||
|
||||
app = FastAPI()
|
||||
templates = Jinja2Templates(directory="app/templates")
|
||||
@@ -47,15 +51,25 @@ def dashboard(request: Request):
|
||||
|
||||
@app.get("/upload", response_class=HTMLResponse)
|
||||
def upload_page(request: Request):
|
||||
return templates.TemplateResponse("upload.html", {"request": request})
|
||||
app_env = os.getenv("APP_ENV", "dev") # Captura variável de ambiente
|
||||
return templates.TemplateResponse("upload.html", {
|
||||
"request": request,
|
||||
"app_env": app_env # Passa para o template
|
||||
})
|
||||
|
||||
@app.get("/relatorios", response_class=HTMLResponse)
|
||||
def relatorios_page(request: Request):
|
||||
return templates.TemplateResponse("relatorios.html", {"request": request})
|
||||
|
||||
@app.get("/parametros", response_class=HTMLResponse)
|
||||
def parametros_page(request: Request):
|
||||
return templates.TemplateResponse("parametros.html", {"request": request})
|
||||
async def parametros_page(request: Request):
|
||||
async with AsyncSessionLocal() as session:
|
||||
result = await session.execute(select(ParametrosFormula))
|
||||
parametros = result.scalars().first()
|
||||
return templates.TemplateResponse("parametros.html", {
|
||||
"request": request,
|
||||
"parametros": parametros or {}
|
||||
})
|
||||
|
||||
@app.post("/upload-files")
|
||||
async def upload_files(files: list[UploadFile] = File(...)):
|
||||
@@ -144,3 +158,28 @@ async def export_excel():
|
||||
media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
headers={"Content-Disposition": "attachment; filename=relatorio_faturas.xlsx"}
|
||||
)
|
||||
|
||||
from app.parametros import router as parametros_router
|
||||
app.include_router(parametros_router)
|
||||
|
||||
def is_homolog():
|
||||
return os.getenv("APP_ENV", "dev") == "homolog"
|
||||
|
||||
@app.post("/limpar-faturas")
|
||||
async def limpar_faturas():
|
||||
app_env = os.getenv("APP_ENV", "dev")
|
||||
if app_env not in ["homolog", "dev", "local"]:
|
||||
return JSONResponse(status_code=403, content={"message": "Operação não permitida neste ambiente."})
|
||||
|
||||
async with AsyncSessionLocal() as session:
|
||||
print("🧪 Limpando faturas do banco...")
|
||||
await session.execute(text("DELETE FROM faturas.faturas"))
|
||||
await session.commit()
|
||||
|
||||
upload_path = os.path.join("app", "uploads")
|
||||
for nome in os.listdir(upload_path):
|
||||
caminho = os.path.join(upload_path, nome)
|
||||
if os.path.isfile(caminho):
|
||||
os.remove(caminho)
|
||||
|
||||
return {"message": "Faturas e arquivos apagados com sucesso."}
|
||||
Reference in New Issue
Block a user