chore(release): bump version to 2.3.26

This commit is contained in:
Christian 2026-07-10 16:22:57 +02:00
parent ca23ac1f2b
commit 48f7b80c49
5 changed files with 45 additions and 6 deletions

View File

@ -1 +1 @@
2.3.25
2.3.26

View File

@ -4,10 +4,11 @@ Invoice Error Finder frontend views.
import logging
from typing import Any, Dict
from fastapi import APIRouter, Request
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__)
@ -39,7 +40,10 @@ def _fetch_customers() -> list:
@router.get("/invoice-error-finder", response_class=HTMLResponse)
async def dashboard(request: Request):
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",
{
@ -49,7 +53,10 @@ async def dashboard(request: Request):
@router.get("/invoice-error-finder/issues", response_class=HTMLResponse)
async def issues_list(request: Request):
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",
{

View File

@ -151,7 +151,22 @@
async function loadDashboard() {
try {
const res = await fetch('/api/v1/invoice-error-finder/dashboard');
if (!res.ok) throw new Error('Kunne ikke hente dashboard');
if (!res.ok) {
let detail = 'Kunne ikke hente dashboard';
try {
const payload = await res.json();
if (res.status === 403) {
detail = 'Du mangler adgang til Faktura-fejl-finder';
} else if (payload?.detail) {
detail = payload.detail;
}
} catch (error) {
if (res.status === 403) {
detail = 'Du mangler adgang til Faktura-fejl-finder';
}
}
throw new Error(detail);
}
const data = await res.json();
document.getElementById('missingLineCount').textContent = data.missing_line?.count ?? 0;

View File

@ -0,0 +1,17 @@
-- Repair migration: ensure invoice error finder import permission exists on older prod databases
-- and is granted to the intended operator groups.
INSERT INTO permissions (code, description, category)
VALUES (
'invoice_error_finder.run_import',
'Trigger invoice/error data imports',
'invoice_error_finder'
)
ON CONFLICT (code) DO NOTHING;
INSERT INTO group_permissions (group_id, permission_id)
SELECT g.id, p.id
FROM groups g
JOIN permissions p ON p.code = 'invoice_error_finder.run_import'
WHERE g.name IN ('Administrators', 'Managers')
ON CONFLICT DO NOTHING;

View File

@ -649,7 +649,7 @@
// Primary source: active drift events filtered client-side by blacklist.
const [eventsRes, blacklistRes] = await Promise.all([
fetch('/api/v1/drift/events?status=active&limit=500', {
fetch('/api/v1/drift/events?status=active&limit=200', {
credentials: 'include',
headers: { 'Accept': 'application/json' }
}),