feat: warehouse places accounting
This commit is contained in:
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