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 %}
+
+
+
+
+ {{ col.label }}
+
+
+
+
+
+
+
+
+ Link to pass to stall relay
+
+
+ {{ col.value }}
+
+
+
+
+
+
+
+ {% 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(