feat: warehouse places accounting
This commit is contained in:
		@@ -27,3 +27,4 @@ from .board import board_router
 | 
			
		||||
from .status import status_router
 | 
			
		||||
from .card_tag import card_tag_router
 | 
			
		||||
from .chat import chat_router
 | 
			
		||||
from .warehouse_management import wms_router
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										150
									
								
								routers/warehouse_management.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								routers/warehouse_management.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,150 @@
 | 
			
		||||
from io import BytesIO
 | 
			
		||||
 | 
			
		||||
from fastapi import APIRouter, Depends, Response
 | 
			
		||||
 | 
			
		||||
from backend.dependecies import WmsSessionDependency
 | 
			
		||||
from generators.warehouse_place_qr_code_generator import WarehousePlaceQRCodeGenerator
 | 
			
		||||
from schemas.warehouse_management import *
 | 
			
		||||
from services.auth import authorized_user
 | 
			
		||||
from services.warehouse_management import WmsService
 | 
			
		||||
 | 
			
		||||
wms_router = APIRouter(
 | 
			
		||||
    prefix="/wms",
 | 
			
		||||
    tags=["wms"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# region Place types
 | 
			
		||||
 | 
			
		||||
@wms_router.get(
 | 
			
		||||
    '/place-type',
 | 
			
		||||
    operation_id='get_place_types',
 | 
			
		||||
    response_model=GetPlaceTypesResponse,
 | 
			
		||||
    dependencies=[Depends(authorized_user)],
 | 
			
		||||
)
 | 
			
		||||
async def get_place_types(
 | 
			
		||||
        session: WmsSessionDependency,
 | 
			
		||||
):
 | 
			
		||||
    return await WmsService(session).get_place_types()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@wms_router.get(
 | 
			
		||||
    '/place-type/flat/{parent_place_type_id}',
 | 
			
		||||
    operation_id='get_flat_place_types',
 | 
			
		||||
    response_model=GetFlatPlaceTypesResponse,
 | 
			
		||||
    dependencies=[Depends(authorized_user)],
 | 
			
		||||
)
 | 
			
		||||
async def get_flat_place_types(
 | 
			
		||||
        session: WmsSessionDependency,
 | 
			
		||||
        parent_place_type_id: int,
 | 
			
		||||
):
 | 
			
		||||
    return await WmsService(session).get_flat_place_types(parent_place_type_id)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@wms_router.post(
 | 
			
		||||
    '/place-type',
 | 
			
		||||
    operation_id='create_place_type',
 | 
			
		||||
    response_model=CreatePlaceTypeResponse,
 | 
			
		||||
    dependencies=[Depends(authorized_user)],
 | 
			
		||||
)
 | 
			
		||||
async def create_place_type(
 | 
			
		||||
        session: WmsSessionDependency,
 | 
			
		||||
        request: CreatePlaceTypeRequest,
 | 
			
		||||
):
 | 
			
		||||
    return await WmsService(session).create_place_type(request)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@wms_router.patch(
 | 
			
		||||
    '/place-type',
 | 
			
		||||
    operation_id='edit_place_type',
 | 
			
		||||
    response_model=EditPlaceTypeResponse,
 | 
			
		||||
    dependencies=[Depends(authorized_user)],
 | 
			
		||||
)
 | 
			
		||||
async def edit_place_type(
 | 
			
		||||
        session: WmsSessionDependency,
 | 
			
		||||
        request: EditPlaceTypeRequest,
 | 
			
		||||
):
 | 
			
		||||
    return await WmsService(session).edit_place_type(request)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@wms_router.delete(
 | 
			
		||||
    '/place-type/{place_type_id}',
 | 
			
		||||
    operation_id='delete_place_type',
 | 
			
		||||
    response_model=DeletePlaceTypeResponse,
 | 
			
		||||
    dependencies=[Depends(authorized_user)],
 | 
			
		||||
)
 | 
			
		||||
async def delete_place_type(
 | 
			
		||||
        session: WmsSessionDependency,
 | 
			
		||||
        place_type_id: int,
 | 
			
		||||
):
 | 
			
		||||
    return await WmsService(session).delete_place_type(place_type_id)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# endregion
 | 
			
		||||
 | 
			
		||||
# region Places
 | 
			
		||||
 | 
			
		||||
@wms_router.get(
 | 
			
		||||
    '/place',
 | 
			
		||||
    operation_id='get_places',
 | 
			
		||||
    response_model=GetPlacesResponse,
 | 
			
		||||
    dependencies=[Depends(authorized_user)],
 | 
			
		||||
)
 | 
			
		||||
async def get_places(
 | 
			
		||||
        session: WmsSessionDependency,
 | 
			
		||||
):
 | 
			
		||||
    return await WmsService(session).get_places()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@wms_router.post(
 | 
			
		||||
    '/place',
 | 
			
		||||
    operation_id='create_place',
 | 
			
		||||
    response_model=CreatePlaceResponse,
 | 
			
		||||
    dependencies=[Depends(authorized_user)],
 | 
			
		||||
)
 | 
			
		||||
async def create_place(
 | 
			
		||||
        session: WmsSessionDependency,
 | 
			
		||||
        request: CreatePlaceRequest,
 | 
			
		||||
):
 | 
			
		||||
    return await WmsService(session).create_place(request)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@wms_router.patch(
 | 
			
		||||
    '/place',
 | 
			
		||||
    operation_id='edit_place',
 | 
			
		||||
    response_model=EditPlaceResponse,
 | 
			
		||||
    dependencies=[Depends(authorized_user)],
 | 
			
		||||
)
 | 
			
		||||
async def edit_place(
 | 
			
		||||
        session: WmsSessionDependency,
 | 
			
		||||
        request: EditPlaceRequest,
 | 
			
		||||
):
 | 
			
		||||
    return await WmsService(session).edit_place(request)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@wms_router.delete(
 | 
			
		||||
    '/place/{place_id}',
 | 
			
		||||
    operation_id='delete_place',
 | 
			
		||||
    response_model=DeletePlaceResponse,
 | 
			
		||||
    dependencies=[Depends(authorized_user)],
 | 
			
		||||
)
 | 
			
		||||
async def delete_place(
 | 
			
		||||
        session: WmsSessionDependency,
 | 
			
		||||
        place_id: int,
 | 
			
		||||
):
 | 
			
		||||
    return await WmsService(session).delete_place(place_id)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@wms_router.get(
 | 
			
		||||
    "/place/pdf/{place_id}/{is_short}",
 | 
			
		||||
    operation_id="get_place_qr_code_pdf",
 | 
			
		||||
)
 | 
			
		||||
async def generate_place_qr_code_pdf(
 | 
			
		||||
        session: WmsSessionDependency,
 | 
			
		||||
        place_id: int,
 | 
			
		||||
        is_short: bool = False,
 | 
			
		||||
):
 | 
			
		||||
    pdf_file: BytesIO = await WarehousePlaceQRCodeGenerator(session).generate(place_id, is_short)
 | 
			
		||||
    return Response(pdf_file.getvalue(), media_type="application/pdf")
 | 
			
		||||
 | 
			
		||||
# endregion
 | 
			
		||||
		Reference in New Issue
	
	Block a user