151 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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
 |