feat: filling deals from excel file

This commit is contained in:
2024-12-25 21:14:00 +04:00
parent e8af9f2237
commit 2abc198a39
6 changed files with 302 additions and 12 deletions

View File

@@ -2,13 +2,14 @@ import base64
from io import BytesIO
from typing import Annotated
from fastapi import APIRouter, Depends, Response
from fastapi import APIRouter, Depends, Response, UploadFile
from sqlalchemy.ext.asyncio import AsyncSession
from backend.dependecies import SessionDependency, CurrentUserDependency
from backend.session import get_session
from generators.deal_pdf_generator.generator import DealTechSpecPdfGenerator
from models import User
from parsers import DealParser
from schemas.barcode import GetDealProductsBarcodesPdfRequest, GetDealProductsBarcodesPdfResponse
from schemas.deal import *
from services.auth import get_current_user, authorized_user, guest_user
@@ -258,6 +259,31 @@ async def get_available_employees_to_assign(
return await DealService(session).get_available_employees_to_assign(deal_id)
@deal_router.post(
'/prefill/excel/parse',
response_model=ParseDealsExcelResponse,
operation_id='parse_deals_excel',
)
async def parse_deals_excel(
session: Annotated[AsyncSession, Depends(get_session)],
upload_file: UploadFile,
):
file_bytes = upload_file.file.read()
return await DealParser(session).parse(file_bytes)
@deal_router.post(
'/prefill/excel/create',
response_model=CreateDealsFromExcelResponse,
operation_id='create_deals_excel',
)
async def create_deals_from_excel(
session: Annotated[AsyncSession, Depends(get_session)],
request: CreateDealsFromExcelRequest,
user: CurrentUserDependency,
):
return await DealService(session).create_deals_from_excel(request, user)
# endregion
# region Deal services