Skip to content
Snippets Groups Projects
Verified Commit f15e88f3 authored by hanfi's avatar hanfi
Browse files

allow register packages by image

parent 2738392f
Branches
Tags
No related merge requests found
......@@ -35,3 +35,6 @@ venv.bak/
# SQLite Databases
*.db
# images directory
images/
from datetime import datetime, timedelta
from uuid import UUID
from fastapi import Depends, FastAPI, HTTPException, Request, status
from fastapi import Depends, FastAPI, HTTPException, Request, UploadFile, status
from fastapi.middleware.cors import CORSMiddleware
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from itsdangerous.serializer import Serializer
......@@ -67,6 +67,17 @@ def add_item(
return utils.prepare_item_shipping(db, item)
@app.post("/item/register", response_model=schemas.Item)
def add_item_with_image(
image: UploadFile,
token: str = Depends(oauth2_scheme),
db: Session = Depends(get_db),
):
check_token(token)
print(image.file)
return utils.add_item_with_image(db, image)
@app.post("/item/update/{item_uuid}", response_model=schemas.Item)
def update_item(
item_uuid: str, data: schemas.ItemUpdate, db: Session = Depends(get_db)
......
from datetime import datetime
from html import escape
from secrets import token_hex
from shutil import copyfileobj
from tempfile import SpooledTemporaryFile
from cryptography.exceptions import InvalidSignature
from cryptography.hazmat.primitives.asymmetric.ed448 import Ed448PublicKey
......@@ -53,6 +55,24 @@ def prepare_item_shipping(db: Session, item: schemas.ItemCreatePrepareShipping):
return new_item
def add_item_with_image(db: Session, image: SpooledTemporaryFile):
db_item = models.Item()
db.add(db_item)
db.commit()
db_image = models.Image(item_uuid=db_item.uuid)
db.add(db_image)
db.commit()
db.refresh(db_image)
print(db_item.uuid)
print(db_image.uuid)
with open(f"./images/{ db_image.uuid }", "wb") as destination:
try:
copyfileobj(image.file, destination)
finally:
image.file.close
return db_item
def update_item(db: Session, item: schemas.Item, data: schemas.ItemUpdate):
public_key = Ed448PublicKey.from_public_bytes(bytes.fromhex(item.verification))
verify = ""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment