feat: servicex export
This commit is contained in:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,7 @@
 | 
				
			|||||||
                <td>{{ service.name }}</td>
 | 
					                <td>{{ service.name }}</td>
 | 
				
			||||||
                {% if service.price_ranges %}
 | 
					                {% if service.price_ranges %}
 | 
				
			||||||
                {% if service.price_ranges|length == 1 %}
 | 
					                {% if service.price_ranges|length == 1 %}
 | 
				
			||||||
                                    <td style="white-space: nowrap">{{ service.price_ranges[0].price }} ₽</td>
 | 
					                <td style="white-space: nowrap">{{ service.price_ranges[0].price|int }} ₽</td>
 | 
				
			||||||
                {% else %}
 | 
					                {% else %}
 | 
				
			||||||
                <td style="white-space: nowrap">
 | 
					                <td style="white-space: nowrap">
 | 
				
			||||||
                    {% for price_range in service.price_ranges[:-1] %}
 | 
					                    {% for price_range in service.price_ranges[:-1] %}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user