Add service catalogue Excel export and duplicate review
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user