From ae49dc8879832069ecdc1534d92cb8fada4a550c Mon Sep 17 00:00:00 2001 From: hanfi <ccc@spahan.ch> Date: Tue, 26 Sep 2023 11:36:48 +0200 Subject: [PATCH] add maintenance endpoint --- backend/main.py | 7 ++++++- backend/utils.py | 15 +++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/backend/main.py b/backend/main.py index 7a73993..2729e25 100644 --- a/backend/main.py +++ b/backend/main.py @@ -98,7 +98,6 @@ def verify_customer( } -# main app @app.post("/delivery", response_model=schemas.Delivery) @limiter.limit("2/minute") def prepare_delivery( @@ -107,6 +106,12 @@ def prepare_delivery( return utils.prepare_delivery(db, delivery.verification) +@app.get("/deliveries", response_model=List[schemas.Delivery]) +def list_deliveries(token: str = Depends(oauth2_scheme), db: Session = Depends(get_db)): + check_token(token, None) + return utils.get_deliveries(db) + + @app.get("/delivery/{delivery_uuid}", response_model=schemas.Delivery) def get_delivery_by_uuid( delivery_uuid: str, diff --git a/backend/utils.py b/backend/utils.py index e6ec199..8628e5e 100644 --- a/backend/utils.py +++ b/backend/utils.py @@ -55,13 +55,24 @@ def get_storages(db: Session): return storages +def get_deliveries(db): + items = db.query(models.Item).filter(models.Item.deployed_at == None) # noqa: E711 + deliveries = set(map(lambda x: x.part_of, items)) + for delivery in deliveries: + delivery.items = [ + item for item in delivery.items if item.deployed_at == None # noqa: E711 + ] + delivery.amount = len(delivery.items) + return sorted(deliveries, key=lambda x: x.tag) + + def get_delivery_by_uuid(db: Session, delivery_uuid: UUID4): delivery = db.get(models.Delivery, delivery_uuid) if delivery: - delivery.amount = len(delivery.items) delivery.items = [ item for item in delivery.items if item.deployed_at == None # noqa: E711 ] + delivery.amount = len(delivery.items) return delivery @@ -70,10 +81,10 @@ def get_delivery_by_tag(db: Session, delivery_tag: str): db.query(models.Delivery).filter(models.Delivery.tag == delivery_tag).first() ) if delivery: - delivery.amount = len(delivery.items) delivery.items = [ item for item in delivery.items if item.deployed_at == None # noqa: E711 ] + delivery.amount = len(delivery.items) return delivery -- GitLab