68 lines
1.7 KiB
Python
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(),
|
|
},
|
|
)
|