maybe good
This commit is contained in:
148
app/main.py
Normal file
148
app/main.py
Normal file
@@ -0,0 +1,148 @@
|
||||
"""
|
||||
Delphi Consulting Group Database System - Main FastAPI Application
|
||||
"""
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from fastapi.responses import HTMLResponse
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from app.config import settings
|
||||
from app.database.base import engine
|
||||
from app.models import BaseModel
|
||||
|
||||
# Create database tables
|
||||
BaseModel.metadata.create_all(bind=engine)
|
||||
|
||||
# Initialize FastAPI app
|
||||
app = FastAPI(
|
||||
title=settings.app_name,
|
||||
version=settings.app_version,
|
||||
description="Modern Python web application for Delphi Consulting Group",
|
||||
)
|
||||
|
||||
# Configure CORS
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"], # Configure appropriately for production
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
# Mount static files
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
|
||||
# Templates
|
||||
templates = Jinja2Templates(directory="templates")
|
||||
|
||||
# Include routers
|
||||
from app.api.auth import router as auth_router
|
||||
from app.api.customers import router as customers_router
|
||||
from app.api.files import router as files_router
|
||||
from app.api.financial import router as financial_router
|
||||
from app.api.documents import router as documents_router
|
||||
from app.api.search import router as search_router
|
||||
from app.api.admin import router as admin_router
|
||||
from app.api.import_data import router as import_router
|
||||
|
||||
app.include_router(auth_router, prefix="/api/auth", tags=["authentication"])
|
||||
app.include_router(customers_router, prefix="/api/customers", tags=["customers"])
|
||||
app.include_router(files_router, prefix="/api/files", tags=["files"])
|
||||
app.include_router(financial_router, prefix="/api/financial", tags=["financial"])
|
||||
app.include_router(documents_router, prefix="/api/documents", tags=["documents"])
|
||||
app.include_router(search_router, prefix="/api/search", tags=["search"])
|
||||
app.include_router(admin_router, prefix="/api/admin", tags=["admin"])
|
||||
app.include_router(import_router, tags=["import"])
|
||||
|
||||
|
||||
@app.get("/", response_class=HTMLResponse)
|
||||
async def root(request: Request):
|
||||
"""Main application - redirect to login"""
|
||||
return templates.TemplateResponse(
|
||||
"login.html",
|
||||
{"request": request, "title": "Login - " + settings.app_name}
|
||||
)
|
||||
|
||||
|
||||
@app.get("/login", response_class=HTMLResponse)
|
||||
async def login_page(request: Request):
|
||||
"""Login page"""
|
||||
return templates.TemplateResponse(
|
||||
"login.html",
|
||||
{"request": request, "title": "Login - " + settings.app_name}
|
||||
)
|
||||
|
||||
|
||||
@app.get("/customers", response_class=HTMLResponse)
|
||||
async def customers_page(request: Request):
|
||||
"""Customer management page"""
|
||||
return templates.TemplateResponse(
|
||||
"customers.html",
|
||||
{"request": request, "title": "Customers - " + settings.app_name}
|
||||
)
|
||||
|
||||
|
||||
@app.get("/import", response_class=HTMLResponse)
|
||||
async def import_page(request: Request):
|
||||
"""Data import management page"""
|
||||
return templates.TemplateResponse(
|
||||
"import.html",
|
||||
{"request": request, "title": "Data Import - " + settings.app_name}
|
||||
)
|
||||
|
||||
|
||||
@app.get("/files", response_class=HTMLResponse)
|
||||
async def files_page(request: Request):
|
||||
"""File cabinet management page"""
|
||||
return templates.TemplateResponse(
|
||||
"files.html",
|
||||
{"request": request, "title": "File Cabinet - " + settings.app_name}
|
||||
)
|
||||
|
||||
|
||||
@app.get("/financial", response_class=HTMLResponse)
|
||||
async def financial_page(request: Request):
|
||||
"""Financial/Ledger management page"""
|
||||
return templates.TemplateResponse(
|
||||
"financial.html",
|
||||
{"request": request, "title": "Financial/Ledger - " + settings.app_name}
|
||||
)
|
||||
|
||||
|
||||
@app.get("/documents", response_class=HTMLResponse)
|
||||
async def documents_page(request: Request):
|
||||
"""Document management page"""
|
||||
return templates.TemplateResponse(
|
||||
"documents.html",
|
||||
{"request": request, "title": "Document Management - " + settings.app_name}
|
||||
)
|
||||
|
||||
|
||||
@app.get("/search", response_class=HTMLResponse)
|
||||
async def search_page(request: Request):
|
||||
"""Advanced search page"""
|
||||
return templates.TemplateResponse(
|
||||
"search.html",
|
||||
{"request": request, "title": "Advanced Search - " + settings.app_name}
|
||||
)
|
||||
|
||||
|
||||
@app.get("/admin", response_class=HTMLResponse)
|
||||
async def admin_page(request: Request):
|
||||
"""System administration page"""
|
||||
return templates.TemplateResponse(
|
||||
"admin.html",
|
||||
{"request": request, "title": "System Administration - " + settings.app_name}
|
||||
)
|
||||
|
||||
|
||||
@app.get("/health")
|
||||
async def health_check():
|
||||
"""Health check endpoint"""
|
||||
return {"status": "healthy", "version": settings.app_version}
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000, reload=settings.debug)
|
||||
Reference in New Issue
Block a user