feat(orion): extend report layout settings to version 1.1
This commit is contained in:
parent
12e1761a5b
commit
613ffdc8b7
591 changed files with 3601 additions and 999 deletions
Binary file not shown.
|
|
@ -56,6 +56,8 @@ from app.schemas.domain import (
|
|||
QuickStartCreateRequest,
|
||||
QuickStartCustomerData,
|
||||
QuickStartValidationSummary,
|
||||
OrionReportSettingsRead,
|
||||
OrionReportSettingsUpdate,
|
||||
UserCreate,
|
||||
UserRead,
|
||||
UserUpdate,
|
||||
|
|
@ -63,6 +65,7 @@ from app.schemas.domain import (
|
|||
)
|
||||
from app.services.domain_service import CrudService, DomainServices
|
||||
from app.services.quickstart_service import QuickStartService
|
||||
from app.services.report_settings import OrionReportSettingsService
|
||||
from app.services.validation_workflow import ValidationWorkflowService
|
||||
|
||||
router = APIRouter(tags=["domain"], dependencies=[Depends(current_user)])
|
||||
|
|
@ -87,6 +90,48 @@ def default_report_checklists(session: Session = Depends(get_session)) -> list[d
|
|||
]
|
||||
|
||||
|
||||
@router.get("/report-settings", response_model=OrionReportSettingsRead)
|
||||
def get_report_settings(
|
||||
session: Session = Depends(get_session),
|
||||
_: User = Depends(current_admin),
|
||||
):
|
||||
return OrionReportSettingsService(session).get_global()
|
||||
|
||||
|
||||
@router.put("/report-settings", response_model=OrionReportSettingsRead)
|
||||
def update_report_settings(
|
||||
payload: OrionReportSettingsUpdate,
|
||||
session: Session = Depends(get_session),
|
||||
user: User = Depends(current_admin),
|
||||
):
|
||||
try:
|
||||
settings = OrionReportSettingsService(session).update_global(payload, user)
|
||||
session.commit()
|
||||
session.refresh(settings)
|
||||
return settings
|
||||
except IntegrityError as exc:
|
||||
session.rollback()
|
||||
raise HTTPException(status_code=409, detail="Berichtseinstellungen konnten nicht gespeichert werden.") from exc
|
||||
|
||||
|
||||
@router.post("/report-settings/preview")
|
||||
def preview_report_settings(
|
||||
payload: OrionReportSettingsUpdate | None = None,
|
||||
session: Session = Depends(get_session),
|
||||
_: User = Depends(current_admin),
|
||||
):
|
||||
try:
|
||||
pdf = OrionReportService(session, Path("/app/reports")).render_settings_preview_pdf(payload)
|
||||
except Exception as exc:
|
||||
logger.exception("Orion settings preview generation failed")
|
||||
raise HTTPException(status_code=502, detail="Die PDF-Vorschau konnte nicht erzeugt werden.") from exc
|
||||
return Response(
|
||||
content=pdf,
|
||||
media_type="application/pdf",
|
||||
headers={"Content-Disposition": 'attachment; filename="orion-layout-preview.pdf"'},
|
||||
)
|
||||
|
||||
|
||||
@router.get("/dashboard")
|
||||
def dashboard(session: Session = Depends(get_session)) -> dict[str, int]:
|
||||
today = func.current_date()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue