feat: servicex export

This commit is contained in:
2024-10-11 21:38:33 +03:00
parent 3db54fdb13
commit ab5fc94e1b
2 changed files with 80 additions and 46 deletions

View File

@@ -1,6 +1,7 @@
from io import BytesIO from io import BytesIO
from typing import Annotated from typing import Annotated
import lexorank
from fastapi import APIRouter, Depends, Response from fastapi import APIRouter, Depends, Response
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
@@ -8,6 +9,7 @@ import enums.service
from backend.dependecies import SessionDependency from backend.dependecies import SessionDependency
from backend.session import get_session from backend.session import get_session
from generators.price_list_pdf_generator.generator import PriceListPdfGenerator from generators.price_list_pdf_generator.generator import PriceListPdfGenerator
from generators.services_excel_generator import ServiceExcelExporter
from schemas.base import BaseEnumListSchema from schemas.base import BaseEnumListSchema
from schemas.service import * from schemas.service import *
from services.auth import guest_user, authorized_user from services.auth import guest_user, authorized_user
@@ -97,6 +99,7 @@ async def get_price_list(
pdf_file: BytesIO = await PriceListPdfGenerator(session).create_price_list_pdf() pdf_file: BytesIO = await PriceListPdfGenerator(session).create_price_list_pdf()
return Response(pdf_file.getvalue(), media_type='application/pdf') return Response(pdf_file.getvalue(), media_type='application/pdf')
# endregion # endregion
# region Categories # region Categories
@@ -151,6 +154,7 @@ async def reorder_category(
): ):
return await ServiceService(session).reorder_category(request) return await ServiceService(session).reorder_category(request)
@service_router.post( @service_router.post(
'/categories/delete', '/categories/delete',
response_model=ServiceDeleteCategoryResponse, response_model=ServiceDeleteCategoryResponse,
@@ -163,6 +167,7 @@ async def delete_category(
): ):
return await ServiceService(session).delete_category(request) return await ServiceService(session).delete_category(request)
# endregion # endregion
# region Types # region Types
@@ -276,4 +281,33 @@ async def delete_price_category(
): ):
return await ServiceService(session).delete_price_category(request) return await ServiceService(session).delete_price_category(request)
# endregion
# region Exports
@service_router.get(
'/export-list/pdf',
operation_id='export_list_pdf',
)
async def export_list_pdf(
session: SessionDependency,
):
pdf_file: BytesIO = await PriceListPdfGenerator(session).create_price_list_pdf()
return Response(pdf_file.getvalue(), media_type='application/pdf')
@service_router.get(
'/export-list/excel',
operation_id='export_list_excel',
)
async def export_list_excel(
session: SessionDependency,
):
excel_file: BytesIO = await ServiceExcelExporter(session).generate_excel()
return Response(excel_file.getvalue(),
media_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
# endregion # endregion

File diff suppressed because one or more lines are too long