main.py
unknown
python
a year ago
5.2 kB
8
Indexable
'''
Add to `main.py`
Summary of Changes
Added endpoint to approve prices in bulk for a batch.
Added endpoint to publish approved prices in bulk for a batch.
Added endpoint to manually approve a single price.
Added endpoint to manually publish a single approved price.
'''
#API to Approve Prices
# Approve prices in bulk for a batch
@app.patch(
"/v1/prices/batch/{job_id}/approve",
response_model=List[MenuItemPrice],
tags=["pricing"],
summary="Approve prices in bulk for a batch",
description="This endpoint approves prices in bulk for a specified batch job.",
responses={
200: {
"description": "The list of approved menu item prices.",
},
404: {
"description": "Job or menu item prices not found."
}
}
)
def approve_prices(job_id: int, user_id: int):
existing_job = next((j for j in mock_jobs if j["id"] == job_id), None)
if not existing_job:
raise HTTPException(status_code=404, detail="Job not found")
if not any(u["id"] == user_id for u in mock_users):
raise HTTPException(status_code=404, detail="User not found")
approved_prices = []
for price in mock_menu_item_prices:
if price["job_id"] == job_id:
price["approved"] = True
price["approved_by"] = user_id
price["approved_at"] = datetime.now().isoformat()
approved_prices.append(price)
if not approved_prices:
raise HTTPException(status_code=404, detail="Menu item prices not found")
return approved_prices
#API to publish prices
# Publish approved prices in bulk for a batch
@app.patch(
"/v1/prices/batch/{job_id}/publish",
response_model=List[MenuItemPrice],
tags=["pricing"],
summary="Publish approved prices in bulk for a batch",
description="This endpoint publishes approved prices in bulk for a specified batch job.",
responses={
200: {
"description": "The list of published menu item prices.",
},
404: {
"description": "Job or menu item prices not found."
}
}
)
def publish_prices(job_id: int, user_id: int):
existing_job = next((j for j in mock_jobs if j["id"] == job_id), None)
if not existing_job:
raise HTTPException(status_code=404, detail="Job not found")
if not any(u["id"] == user_id for u in mock_users):
raise HTTPException(status_code=404, detail="User not found")
published_prices = []
for price in mock_menu_item_prices:
if price["job_id"] == job_id and price["approved"]:
price["published"] = True
price["published_by"] = user_id
price["published_at"] = datetime.now().isoformat()
published_prices.append(price)
if not published_prices:
raise HTTPException(status_code=404, detail="Approved menu item prices not found")
return published_prices
#API to Manually Approve a Single Price
# Approve a single menu item price manually
@app.patch(
"/v1/prices/{price_id}/approve",
response_model=MenuItemPrice,
tags=["pricing"],
summary="Approve a single menu item price manually",
description="This endpoint approves a single menu item price manually.",
responses={
200: {
"description": "The approved menu item price.",
},
404: {
"description": "Menu item price not found."
}
}
)
def approve_price(price_id: int, user_id: int):
existing_price = next((p for p in mock_menu_item_prices if p["id"] == price_id), None)
if not existing_price:
raise HTTPException(status_code=404, detail="Menu item price not found")
if not any(u["id"] == user_id for u in mock_users):
raise HTTPException(status_code=404, detail="User not found")
existing_price["approved"] = True
existing_price["approved_by"] = user_id
existing_price["approved_at"] = datetime.now().isoformat()
return existing_price
#API to Manually Publish a Single Price
# Publish a single approved menu item price manually
@app.patch(
"/v1/prices/{price_id}/publish",
response_model=MenuItemPrice,
tags=["pricing"],
summary="Publish a single approved menu item price manually",
description="This endpoint publishes a single approved menu item price manually.",
responses={
200: {
"description": "The published menu item price.",
},
404: {
"description": "Menu item price not found or not approved."
}
}
)
def publish_price(price_id: int, user_id: int):
existing_price = next((p for p in mock_menu_item_prices if p["id"] == price_id), None)
if not existing_price:
raise HTTPException(status_code=404, detail="Menu item price not found")
if not existing_price["approved"]:
raise HTTPException(status_code=400, detail="Menu item price is not approved")
if not any(u["id"] == user_id for u in mock_users):
raise HTTPException(status_code=404, detail="User not found")
existing_price["published"] = True
existing_price["published_by"] = user_id
existing_price["published_at"] = datetime.now().isoformat()
return existing_price
Editor is loading...
Leave a Comment