bmc_hub/app/modules/invoice_error_finder/frontend/views.py
2026-07-10 16:22:57 +02:00

68 lines
1.7 KiB
Python

"""
Invoice Error Finder frontend views.
"""
import logging
from typing import Any, Dict
from fastapi import APIRouter, Depends, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from app.core.auth_dependencies import require_permission
from app.core.database import execute_query
logger = logging.getLogger(__name__)
router = APIRouter()
templates = Jinja2Templates(directory="app")
def _fetch_assignment_users() -> list:
return execute_query(
"""
SELECT user_id, COALESCE(full_name, username) AS display_name
FROM users
ORDER BY display_name
""",
(),
) or []
def _fetch_customers() -> list:
return execute_query(
"""
SELECT id, name
FROM customers
WHERE deleted_at IS NULL
ORDER BY name
""",
(),
) or []
@router.get("/invoice-error-finder", response_class=HTMLResponse)
async def dashboard(
request: Request,
current_user: dict = Depends(require_permission("invoice_error_finder.view")),
):
return templates.TemplateResponse(
"modules/invoice_error_finder/templates/dashboard.html",
{
"request": request,
},
)
@router.get("/invoice-error-finder/issues", response_class=HTMLResponse)
async def issues_list(
request: Request,
current_user: dict = Depends(require_permission("invoice_error_finder.view")),
):
return templates.TemplateResponse(
"modules/invoice_error_finder/templates/issues.html",
{
"request": request,
"users": _fetch_assignment_users(),
"customers": _fetch_customers(),
},
)