mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-26 15:42:30 +01:00
products
This commit is contained in:
parent
6b2f3d05d5
commit
903e0d5b0b
1 changed files with 40 additions and 35 deletions
|
@ -1,4 +1,6 @@
|
||||||
|
from base64 import urlsafe_b64encode
|
||||||
from http import HTTPStatus
|
from http import HTTPStatus
|
||||||
|
from uuid import uuid4
|
||||||
|
|
||||||
from fastapi import Request
|
from fastapi import Request
|
||||||
from fastapi.param_functions import Query
|
from fastapi.param_functions import Query
|
||||||
|
@ -6,41 +8,44 @@ from fastapi.params import Depends
|
||||||
from starlette.exceptions import HTTPException
|
from starlette.exceptions import HTTPException
|
||||||
|
|
||||||
from lnbits.core.crud import get_user
|
from lnbits.core.crud import get_user
|
||||||
from lnbits.decorators import api_check_wallet_key, api_validate_post_request
|
from lnbits.core.services import create_invoice
|
||||||
|
from lnbits.decorators import (
|
||||||
|
WalletTypeInfo,
|
||||||
|
api_check_wallet_key,
|
||||||
|
api_validate_post_request,
|
||||||
|
get_key_type,
|
||||||
|
require_admin_key,
|
||||||
|
)
|
||||||
|
|
||||||
from . import diagonalley_ext
|
from . import db, diagonalley_ext
|
||||||
from .crud import (
|
from .crud import (
|
||||||
create_diagonalley_product,
|
|
||||||
get_diagonalley_product,
|
|
||||||
get_diagonalley_products,
|
|
||||||
delete_diagonalley_product,
|
|
||||||
create_diagonalley_zone,
|
|
||||||
update_diagonalley_zone,
|
|
||||||
get_diagonalley_zone,
|
|
||||||
get_diagonalley_zones,
|
|
||||||
delete_diagonalley_zone,
|
|
||||||
create_diagonalley_stall,
|
|
||||||
update_diagonalley_stall,
|
|
||||||
get_diagonalley_stall,
|
|
||||||
get_diagonalley_stalls,
|
|
||||||
delete_diagonalley_stall,
|
|
||||||
create_diagonalley_order,
|
create_diagonalley_order,
|
||||||
|
create_diagonalley_product,
|
||||||
|
create_diagonalley_stall,
|
||||||
|
create_diagonalley_zone,
|
||||||
|
delete_diagonalley_order,
|
||||||
|
delete_diagonalley_product,
|
||||||
|
delete_diagonalley_stall,
|
||||||
|
delete_diagonalley_zone,
|
||||||
get_diagonalley_order,
|
get_diagonalley_order,
|
||||||
get_diagonalley_orders,
|
get_diagonalley_orders,
|
||||||
|
get_diagonalley_product,
|
||||||
|
get_diagonalley_products,
|
||||||
|
get_diagonalley_stall,
|
||||||
|
get_diagonalley_stalls,
|
||||||
|
get_diagonalley_zone,
|
||||||
|
get_diagonalley_zones,
|
||||||
update_diagonalley_product,
|
update_diagonalley_product,
|
||||||
delete_diagonalley_order,
|
update_diagonalley_stall,
|
||||||
|
update_diagonalley_zone,
|
||||||
)
|
)
|
||||||
from lnbits.core.services import create_invoice
|
from .models import Orders, Products, Stalls
|
||||||
from base64 import urlsafe_b64encode
|
|
||||||
from uuid import uuid4
|
|
||||||
|
|
||||||
# from lnbits.db import open_ext_db
|
# from lnbits.db import open_ext_db
|
||||||
|
|
||||||
from . import db
|
|
||||||
from .models import Products, Orders, Stalls
|
|
||||||
|
|
||||||
### Products
|
### Products
|
||||||
|
"""
|
||||||
@copilot_ext.get("/api/v1/copilot/{copilot_id}")
|
@copilot_ext.get("/api/v1/copilot/{copilot_id}")
|
||||||
async def api_copilot_retrieve(
|
async def api_copilot_retrieve(
|
||||||
req: Request,
|
req: Request,
|
||||||
|
@ -55,26 +60,27 @@ async def api_copilot_retrieve(
|
||||||
if not copilot.lnurl_toggle:
|
if not copilot.lnurl_toggle:
|
||||||
return copilot.dict()
|
return copilot.dict()
|
||||||
return {**copilot.dict(), **{"lnurl": copilot.lnurl(req)}}
|
return {**copilot.dict(), **{"lnurl": copilot.lnurl(req)}}
|
||||||
|
"""
|
||||||
|
|
||||||
@diagonalley_ext.get("/api/v1/products")
|
@diagonalley_ext.get("/api/v1/products")
|
||||||
async def api_diagonalley_products(
|
async def api_diagonalley_products(
|
||||||
req: Request,
|
req: Request,
|
||||||
wallet: WalletTypeInfo = Depends(get_key_type),
|
wallet: WalletTypeInfo = Depends(get_key_type),
|
||||||
|
all_stalls: bool = Query(False)
|
||||||
):
|
):
|
||||||
wallet_ids = [wallet.wallet.id]
|
wallet_ids = [wallet.wallet.id]
|
||||||
|
|
||||||
if "all_stalls" in request.args:
|
if all_stalls:
|
||||||
wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids
|
wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids
|
||||||
|
|
||||||
return ([product._asdict() for product in await get_diagonalley_products(wallet_ids)])
|
return ([product.dict() for product in await get_diagonalley_products(wallet_ids)])
|
||||||
|
|
||||||
|
|
||||||
@diagonalley_ext.post("/api/v1/products")
|
@diagonalley_ext.post("/api/v1/products")
|
||||||
@diagonalley_ext.put("/api/v1/products/{product_id}")
|
@diagonalley_ext.put("/api/v1/products/{product_id}")
|
||||||
async def api_diagonalley_product_create(
|
async def api_diagonalley_product_create(
|
||||||
data: Products,
|
data: Products,
|
||||||
product_id=: str = Query(None),
|
product_id: str = Query(None),
|
||||||
wallet: WalletTypeInfo = Depends(get_key_type)
|
wallet: WalletTypeInfo = Depends(get_key_type)
|
||||||
):
|
):
|
||||||
|
|
||||||
|
@ -82,19 +88,19 @@ async def api_diagonalley_product_create(
|
||||||
product = await get_diagonalley_product(product_id)
|
product = await get_diagonalley_product(product_id)
|
||||||
|
|
||||||
if not product:
|
if not product:
|
||||||
return ({"message": "Withdraw product does not exist."}))
|
return ({"message": "Withdraw product does not exist."})
|
||||||
|
|
||||||
if product.wallet != wallet.wallet.id:
|
if product.wallet != wallet.wallet.id:
|
||||||
return ({"message": "Not your withdraw product."}))
|
return ({"message": "Not your withdraw product."})
|
||||||
|
|
||||||
product = await update_diagonalley_product(product_id, data)
|
product = await update_diagonalley_product(product_id, data)
|
||||||
else:
|
else:
|
||||||
product = await create_diagonalley_product(wallet_id=wallet.wallet.id, data)
|
product = await create_diagonalley_product(wallet_id=wallet.wallet.id, data)
|
||||||
|
|
||||||
return ({**product._asdict()}))
|
return product.dict()
|
||||||
|
|
||||||
|
|
||||||
@diagonalley_ext.route("/api/v1/products/{product_id}")
|
@diagonalley_ext.delete("/api/v1/products/{product_id}")
|
||||||
async def api_diagonalley_products_delete(product_id, wallet: WalletTypeInfo = Depends(require_admin_key)):
|
async def api_diagonalley_products_delete(product_id, wallet: WalletTypeInfo = Depends(require_admin_key)):
|
||||||
product = await get_diagonalley_product(product_id)
|
product = await get_diagonalley_product(product_id)
|
||||||
|
|
||||||
|
@ -105,7 +111,6 @@ async def api_diagonalley_products_delete(product_id, wallet: WalletTypeInfo = D
|
||||||
return ({"message": "Not your Diagon Alley."})
|
return ({"message": "Not your Diagon Alley."})
|
||||||
|
|
||||||
await delete_diagonalley_product(product_id)
|
await delete_diagonalley_product(product_id)
|
||||||
|
|
||||||
raise HTTPException(status_code=HTTPStatus.NO_CONTENT)
|
raise HTTPException(status_code=HTTPStatus.NO_CONTENT)
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,13 +118,13 @@ async def api_diagonalley_products_delete(product_id, wallet: WalletTypeInfo = D
|
||||||
|
|
||||||
|
|
||||||
@diagonalley_ext.get("/api/v1/zones")
|
@diagonalley_ext.get("/api/v1/zones")
|
||||||
async def api_diagonalley_zones(wallet: WalletTypeInfo = Depends(get_key_type)):
|
async def api_diagonalley_zones(wallet: WalletTypeInfo = Depends(get_key_type), all_wallets: bool = Query(False)):
|
||||||
wallet_ids = [wallet.wallet.id]
|
wallet_ids = [wallet.wallet.id]
|
||||||
|
|
||||||
if "all_wallets" in request.args:
|
if all_wallets:
|
||||||
wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids
|
wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids
|
||||||
|
|
||||||
return ([zone._asdict() for zone in await get_diagonalley_zones(wallet_ids)]))
|
return ([zone.dict() for zone in await get_diagonalley_zones(wallet_ids)])
|
||||||
|
|
||||||
|
|
||||||
@diagonalley_ext.post("/api/v1/zones")
|
@diagonalley_ext.post("/api/v1/zones")
|
||||||
|
|
Loading…
Add table
Reference in a new issue