Add service catalogue Excel export and duplicate review

This commit is contained in:
A R R R Associates
2026-07-17 22:18:33 +05:30
parent 9c04d97625
commit 9f51461548
3 changed files with 228 additions and 0 deletions
+25
View File
@@ -1,5 +1,7 @@
from __future__ import annotations
from datetime import datetime, timezone
from fastapi import APIRouter, File, Form, Request, UploadFile
from fastapi.responses import FileResponse, RedirectResponse, StreamingResponse
from sqlalchemy import select
@@ -30,6 +32,7 @@ from app.modules.services.due_dates import (
list_due_rules,
parse_optional_date,
)
from app.modules.services.catalogue_export import build_service_catalogue_export
from app.modules.services.task_documents import (
create_task_document_requirement,
get_task_document_requirement,
@@ -332,6 +335,28 @@ def catalogue_list(request: Request, q: str = '', category_id: int | None = None
db.close()
@router.get('/catalogue/export')
def catalogue_export(request: Request):
db = CommonSessionLocal()
try:
user = get_current_user(request, db=db)
if not user:
return RedirectResponse(url='/login', status_code=303)
if not _is_system_admin(db, user):
return _redirect_denied()
require_permission(db, user, 'services.view')
workbook_bytes = build_service_catalogue_export(db)
filename = f"service_catalogue_export_{datetime.now(timezone.utc).strftime('%Y%m%d_%H%M%S')}.xlsx"
return StreamingResponse(
iter([workbook_bytes]),
media_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
headers={'Content-Disposition': f'attachment; filename="{filename}"'},
)
finally:
db.close()
@router.get('/catalogue/new')
def catalogue_create_page(request: Request):
db = CommonSessionLocal()