From 6a5c0bd8ee3bcb66acbb79292e1aca997b49ffd9 Mon Sep 17 00:00:00 2001 From: Tiago vasconcelos Date: Tue, 13 Sep 2022 12:52:26 +0100 Subject: [PATCH] list marketplaces with stalls in index.html --- lnbits/extensions/diagonalley/crud.py | 13 +- .../templates/diagonalley/index.html | 113 ++++++++++++++++++ lnbits/extensions/diagonalley/views_api.py | 12 +- 3 files changed, 135 insertions(+), 3 deletions(-) diff --git a/lnbits/extensions/diagonalley/crud.py b/lnbits/extensions/diagonalley/crud.py index 49a64fc7..b2689f21 100644 --- a/lnbits/extensions/diagonalley/crud.py +++ b/lnbits/extensions/diagonalley/crud.py @@ -201,6 +201,13 @@ async def get_diagonalley_stalls(wallet_ids: Union[str, List[str]]) -> List[Stal ) return [Stalls(**row) for row in rows] +async def get_diagonalley_stalls_by_ids(stall_ids: Union[str, List[str]]) -> List[Stalls]: + q = ",".join(["?"] * len(stall_ids)) + rows = await db.fetchall( + f"SELECT * FROM diagonalley.stalls WHERE id IN ({q})", (*stall_ids,) + ) + return [Stalls(**row) for row in rows] + async def delete_diagonalley_stall(stall_id: str) -> None: await db.execute("DELETE FROM diagonalley.stalls WHERE id = ?", (stall_id,)) @@ -346,9 +353,11 @@ async def get_diagonalley_market(market_id: str) -> Optional[Market]: async def get_diagonalley_market_stalls(market_id: str): rows = await db.fetchall( "SELECT * FROM diagonalley.market_stalls WHERE marketid = ?", (market_id,) - ) + ) - return [{**row} for row in rows] + ids = [row["stallid"] for row in rows] + + return await get_diagonalley_stalls_by_ids(ids) async def create_diagonalley_market(data: CreateMarket): diff --git a/lnbits/extensions/diagonalley/templates/diagonalley/index.html b/lnbits/extensions/diagonalley/templates/diagonalley/index.html index 8d812a4a..a8062910 100644 --- a/lnbits/extensions/diagonalley/templates/diagonalley/index.html +++ b/lnbits/extensions/diagonalley/templates/diagonalley/index.html @@ -669,6 +669,80 @@ + + + +
+
+
Marketplaces
+
+
+ Export to CSV +
+
+ + {% raw %} + + + {% endraw %} + +
+
+ @@ -817,6 +891,17 @@ const mapMarkets = obj => { obj._data = _.clone(obj) + obj.stores = [] + LNbits.api + .request('GET', `/diagonalley/api/v1/markets/${obj.id}/stalls`, null) + .then(response => { + if (response.data) { + obj.stores = response.data.map(s => s.name).toString() + } + }) + .catch(error => { + LNbits.utils.notifyApiError(error) + }) return obj } @@ -832,6 +917,7 @@ products: [], orders: [], stalls: [], + markets: [], zones: [], zoneOptions: [], customerKeys: [], @@ -1015,6 +1101,31 @@ rowsPerPage: 10 } }, + marketTable: { + columns: [ + { + name: 'id', + align: 'left', + label: 'ID', + field: 'id' + }, + { + name: 'name', + align: 'left', + label: 'Name', + field: 'name' + }, + { + name: 'stores', + align: 'left', + label: 'Stores', + field: 'stores' + } + ], + pagination: { + rowsPerPage: 10 + } + }, zonesTable: { columns: [ { @@ -1517,12 +1628,14 @@ .then(response => { if (response.data) { this.markets = response.data.map(mapMarkets) + console.log(this.markets) } }) .catch(error => { LNbits.utils.notifyApiError(error) }) }, + openShopUpdateDialog: function (linkId) { var self = this var link = _.findWhere(self.markets, {id: linkId}) diff --git a/lnbits/extensions/diagonalley/views_api.py b/lnbits/extensions/diagonalley/views_api.py index 0e69e637..947538c8 100644 --- a/lnbits/extensions/diagonalley/views_api.py +++ b/lnbits/extensions/diagonalley/views_api.py @@ -1,5 +1,6 @@ from base64 import urlsafe_b64encode from http import HTTPStatus +from typing import List from uuid import uuid4 from fastapi import Request @@ -33,6 +34,7 @@ from .crud import ( delete_diagonalley_stall, delete_diagonalley_zone, get_diagonalley_market, + get_diagonalley_market_stalls, get_diagonalley_markets, get_diagonalley_order, get_diagonalley_order_details, @@ -42,6 +44,7 @@ from .crud import ( get_diagonalley_products, get_diagonalley_stall, get_diagonalley_stalls, + get_diagonalley_stalls_by_ids, get_diagonalley_zone, get_diagonalley_zones, update_diagonalley_market, @@ -426,7 +429,8 @@ async def api_diagonalley_stall_order( @diagonalley_ext.get("/api/v1/markets") -async def api_diagonalley_orders(wallet: WalletTypeInfo = Depends(get_key_type)): +async def api_diagonalley_markets(wallet: WalletTypeInfo = Depends(get_key_type)): + # await get_diagonalley_market_stalls(market_id="FzpWnMyHQMcRppiGVua4eY") try: return [ market.dict() @@ -436,6 +440,12 @@ async def api_diagonalley_orders(wallet: WalletTypeInfo = Depends(get_key_type)) return {"message": "We could not retrieve the markets."} +@diagonalley_ext.get("/api/v1/markets/{market_id}/stalls") +async def api_diagonalley_market_stalls(market_id: str): + stall_ids = await get_diagonalley_market_stalls(market_id) + return stall_ids + + @diagonalley_ext.post("/api/v1/markets") @diagonalley_ext.put("/api/v1/markets/{market_id}") async def api_diagonalley_stall_create(