UI fires up

This commit is contained in:
Tiago vasconcelos 2022-01-28 16:22:54 +00:00
parent cad896f909
commit 5048080ff6
4 changed files with 55 additions and 49 deletions

View file

@ -1,16 +1,37 @@
from quart import Blueprint import asyncio
from fastapi import APIRouter
from fastapi.staticfiles import StaticFiles
from lnbits.db import Database from lnbits.db import Database
from lnbits.helpers import template_renderer
from lnbits.tasks import catch_everything_and_restart
db = Database("ext_diagonalley") db = Database("ext_diagonalley")
diagonalley_ext: Blueprint = Blueprint( diagonalley_static_files = [
"diagonalley", __name__, static_folder="static", template_folder="templates" {
"path": "/diagonalley/static",
"app": StaticFiles(directory="lnbits/extensions/diagonalley/static"),
"name": "diagonalley_static",
}
]
diagonalley_ext: APIRouter = APIRouter(
prefix="/diagonalley", tags=["diagonalley"]
# "diagonalley", __name__, static_folder="static", template_folder="templates"
) )
from .views_api import * # noqa def diagonalley_renderer():
return template_renderer(["lnbits/extensions/diagonalley/templates"])
from .tasks import wait_for_paid_invoices
from .views import * # noqa from .views import * # noqa
from .views_api import * # noqa
from .tasks import register_listeners
from lnbits.tasks import record_async
diagonalley_ext.record(record_async(register_listeners)) def diagonalley_start():
loop = asyncio.get_event_loop()
loop.create_task(catch_everything_and_restart(wait_for_paid_invoices))

View file

@ -3,8 +3,6 @@ import asyncio
from lnbits.core.models import Payment from lnbits.core.models import Payment
from lnbits.tasks import register_invoice_listener from lnbits.tasks import register_invoice_listener
from .crud import get_ticket, set_ticket_paid
async def wait_for_paid_invoices(): async def wait_for_paid_invoices():
invoice_queue = asyncio.Queue() invoice_queue = asyncio.Queue()
@ -16,6 +14,7 @@ async def wait_for_paid_invoices():
async def on_invoice_paid(payment: Payment) -> None: async def on_invoice_paid(payment: Payment) -> None:
"""
if "lnticket" != payment.extra.get("tag"): if "lnticket" != payment.extra.get("tag"):
# not a lnticket invoice # not a lnticket invoice
return return
@ -26,4 +25,5 @@ async def on_invoice_paid(payment: Payment) -> None:
return return
await payment.set_pending(False) await payment.set_pending(False)
await set_ticket_paid(payment.payment_hash) await set_ticket_paid(payment.payment_hash)
"""

View file

@ -1,44 +1,35 @@
from typing import List
from fastapi import Request, WebSocket, WebSocketDisconnect
from fastapi.params import Depends
from fastapi.templating import Jinja2Templates
from starlette.responses import HTMLResponse # type: ignore
from http import HTTPStatus from http import HTTPStatus
import json
from lnbits.decorators import check_user_exists, validate_uuids
from lnbits.extensions.diagonalley import diagonalley_ext
from .crud import ( from fastapi import Request
create_diagonalley_product, from fastapi.params import Depends
get_diagonalley_product, from fastapi.templating import Jinja2Templates
get_diagonalley_products, from starlette.exceptions import HTTPException
delete_diagonalley_product, from starlette.responses import HTMLResponse
create_diagonalley_order,
get_diagonalley_order,
get_diagonalley_orders,
update_diagonalley_product,
)
from lnbits.core.models import User
from lnbits.decorators import check_user_exists # type: ignore
from lnbits.extensions.diagonalley import diagonalley_ext, diagonalley_renderer
from .crud import get_diagonalley_products
templates = Jinja2Templates(directory="templates")
@diagonalley_ext.get("/", response_class=HTMLResponse) @diagonalley_ext.get("/", response_class=HTMLResponse)
@validate_uuids(["usr"], required=True) async def index(request: Request, user: User = Depends(check_user_exists)):
@check_user_exists(request: Request) return diagonalley_renderer().TemplateResponse(
async def index(): "diagonalley/index.html", {"request": request, "user": user.dict()}
return await render_template("diagonalley/index.html", user=g.user) )
@diagonalley_ext.get("/{stall_id}", response_class=HTMLResponse)
@diagonalley_ext.get("/<stall_id>", response_class=HTMLResponse)
async def display(request: Request, stall_id): async def display(request: Request, stall_id):
product = await get_diagonalley_products(stall_id) product = await get_diagonalley_products(stall_id)
if not product: if not product:
abort(HTTPStatus.NOT_FOUND, "Stall does not exist.") raise HTTPException(
status_code=HTTPStatus.NOT_FOUND, detail="Stall does not exist."
return await render_template( )
return diagonalley_renderer().TemplateResponse(
"diagonalley/stall.html", "diagonalley/stall.html",
stall=json.dumps( {"stall": [product.dict() for product in await get_diagonalley_products(stall_id)]}
[product._asdict() for product in await get_diagonalley_products(stall_id)]
),
) )

View file

@ -9,13 +9,7 @@ from starlette.exceptions import HTTPException
from lnbits.core.crud import get_user from lnbits.core.crud import get_user
from lnbits.core.services import create_invoice from lnbits.core.services import create_invoice
from lnbits.decorators import ( from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key
WalletTypeInfo,
api_check_wallet_key,
api_validate_post_request,
get_key_type,
require_admin_key,
)
from . import db, diagonalley_ext from . import db, diagonalley_ext
from .crud import ( from .crud import (