Skip to content
Snippets Groups Projects

backend api v2

Merged hanfi requested to merge staging into main
3 files
+ 53
12
Compare changes
  • Side-by-side
  • Inline
Files
3
+ 33
9
from typing import List
from uuid import UUID
from fastapi import Depends, FastAPI, HTTPException, Request, UploadFile, status
@@ -86,13 +87,13 @@ def verify_customer(
login_data: schemas.LoginData, db: Session = Depends(get_db)
): # item_uuid: str, signature: str):
print(login_data)
item = utils.get_item_by_uuid(db, UUID(login_data.item_uuid))
if not item:
delivery = utils.get_delivery_by_uuid(db, UUID(login_data.delivery_uuid))
if not delivery:
raise HTTPException(status_code=404, detail="Item not found")
if not utils.verify_signature(item, login_data.signature):
if not utils.verify_signature(delivery, delivery.uuid, login_data.signature):
raise HTTPException(status_code=400, detail="Invalid signature")
return {
"access_token": oauth2_tokener.dumps(str(item.uuid)),
"access_token": oauth2_tokener.dumps(str(delivery.uuid)),
"token_type": "bearer",
}
@@ -101,9 +102,9 @@ def verify_customer(
@app.post("/delivery", response_model=schemas.Delivery)
@limiter.limit("2/minute")
def prepare_delivery(
request: Request, verification: str, db: Session = Depends(get_db)
request: Request, delivery: schemas.DeliveryBase, db: Session = Depends(get_db)
):
return utils.prepare_delivery(db, verification)
return utils.prepare_delivery(db, delivery.verification)
@app.get("/delivery/{delivery_uuid}", response_model=schemas.Delivery)
@@ -119,6 +120,17 @@ def get_delivery_by_uuid(
return delivery
@app.get("/tag/{delivery_tag}", response_model=schemas.Delivery)
def get_delivery_by_tag(
delivery_tag: str,
token: str = Depends(oauth2_scheme),
db: Session = Depends(get_db),
):
delivery = utils.get_delivery_by_tag(db, delivery_tag)
check_token(token, delivery.uuid)
return delivery
@app.put("/delivery/{delivery_uuid}", response_model=schemas.Delivery)
def update_delivery(
delivery_uuid: str,
@@ -133,13 +145,16 @@ def update_delivery(
@app.post("/item", response_model=schemas.Item)
def add_item(
delivery_uuid: str,
storage_name: str,
item: schemas.ItemAdd,
token: str = Depends(oauth2_scheme),
db: Session = Depends(get_db),
):
check_token(token, None)
return utils.add_item_for_delivery_at_storage(db, UUID(delivery_uuid), storage_name)
print(item)
return utils.add_item_for_delivery_at_storage(
db, item.delivery_uuid, item.storage_name
)
@app.get("/item/{item_uuid}", response_model=schemas.Item)
@@ -167,6 +182,15 @@ def get_storage(
return utils.get_storage_by_name(db, storage_name)
@app.get("/storages", response_model=List[schemas.Storage])
def get_storages(
token: str = Depends(oauth2_scheme),
db: Session = Depends(get_db),
):
check_token(token, None)
return utils.get_storages(db)
@app.post("/item/register", response_model=schemas.Delivery)
def add_item_with_image(
image: UploadFile,
Loading