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
No related tags found
No related merge requests found
...@@ -35,3 +35,6 @@ venv.bak/ ...@@ -35,3 +35,6 @@ venv.bak/
# SQLite Databases # SQLite Databases
*.db *.db
# images directory
images/
from datetime import datetime, timedelta from datetime import datetime, timedelta
from uuid import UUID 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.middleware.cors import CORSMiddleware
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from itsdangerous.serializer import Serializer from itsdangerous.serializer import Serializer
...@@ -67,6 +67,17 @@ def add_item( ...@@ -67,6 +67,17 @@ def add_item(
return utils.prepare_item_shipping(db, 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) @app.post("/item/update/{item_uuid}", response_model=schemas.Item)
def update_item( def update_item(
item_uuid: str, data: schemas.ItemUpdate, db: Session = Depends(get_db) item_uuid: str, data: schemas.ItemUpdate, db: Session = Depends(get_db)
......
from datetime import datetime from datetime import datetime
from html import escape from html import escape
from secrets import token_hex from secrets import token_hex
from shutil import copyfileobj
from tempfile import SpooledTemporaryFile
from cryptography.exceptions import InvalidSignature from cryptography.exceptions import InvalidSignature
from cryptography.hazmat.primitives.asymmetric.ed448 import Ed448PublicKey from cryptography.hazmat.primitives.asymmetric.ed448 import Ed448PublicKey
...@@ -53,6 +55,24 @@ def prepare_item_shipping(db: Session, item: schemas.ItemCreatePrepareShipping): ...@@ -53,6 +55,24 @@ def prepare_item_shipping(db: Session, item: schemas.ItemCreatePrepareShipping):
return new_item 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): def update_item(db: Session, item: schemas.Item, data: schemas.ItemUpdate):
public_key = Ed448PublicKey.from_public_bytes(bytes.fromhex(item.verification)) public_key = Ed448PublicKey.from_public_bytes(bytes.fromhex(item.verification))
verify = "" verify = ""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment