From 980a813a87b671b6b5a39bdb56e574d34ff7b064 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Thu, 17 Aug 2023 14:58:44 +0100 Subject: [PATCH 1/2] add timestamp on register --- crud.py | 3 ++- migrations.py | 8 ++++++++ models.py | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/crud.py b/crud.py index fc3de9d..00c7b72 100644 --- a/crud.py +++ b/crud.py @@ -135,7 +135,8 @@ async def get_event_tickets(event_id: str, wallet_id: str) -> List[Ticket]: async def reg_ticket(ticket_id: str) -> List[Ticket]: await db.execute( - "UPDATE events.ticket SET registered = ? WHERE id = ?", (True, ticket_id) + f"UPDATE events.ticket SET registered = ?, reg_timestamp = {db.timestamp_now} WHERE id = ?", + (True, ticket_id), ) ticket = await db.fetchone("SELECT * FROM events.ticket WHERE id = ?", (ticket_id,)) rows = await db.fetchall( diff --git a/migrations.py b/migrations.py index 5b9d53b..6dba178 100644 --- a/migrations.py +++ b/migrations.py @@ -81,3 +81,11 @@ async def m002_changed(db): (row[0], row[1], row[2], row[3], row[4], row[5], True), ) await db.execute("DROP TABLE events.tickets") + +async def m003_add_register_timestamp(db): + """ + Add a column to register the timestamp of ticket register + """ + await db.execute( + "ALTER TABLE events.ticket ADD COLUMN reg_timestamp TIMESTAMP;" + ) # NULL means not registered, or old ticket \ No newline at end of file diff --git a/models.py b/models.py index b9bf7c0..62cba60 100644 --- a/models.py +++ b/models.py @@ -1,5 +1,6 @@ from fastapi import Query from pydantic import BaseModel +from typing import Optional class CreateEvent(BaseModel): @@ -39,5 +40,6 @@ class Ticket(BaseModel): name: str email: str registered: bool + reg_timestamp: Optional[int] paid: bool time: int From a5992a93b01136a5e036a6165d3586f62d1d43e8 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Thu, 17 Aug 2023 16:42:28 +0100 Subject: [PATCH 2/2] format --- README.md | 1 + config.json | 8 ++++---- manifest.json | 14 +++++++------- migrations.py | 5 ++--- views_api.py | 9 ++++++++- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index c55b8b2..ebd7194 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Events - [LNbits](https://github.com/lnbits/lnbits) extension + For more about LNBits extension check [this tutorial](https://github.com/lnbits/lnbits/wiki/LNbits-Extensions) ## Sell tickets for events and use the built-in scanner for registering attendants diff --git a/config.json b/config.json index a62bcc4..bdc8ba6 100644 --- a/config.json +++ b/config.json @@ -1,6 +1,6 @@ { - "name": "Events", - "short_description": "Sell and register event tickets", - "tile": "/events/static/image/events.png", - "contributors": ["benarc"] + "name": "Events", + "short_description": "Sell and register event tickets", + "tile": "/events/static/image/events.png", + "contributors": ["benarc"] } diff --git a/manifest.json b/manifest.json index 13726a7..cee435b 100644 --- a/manifest.json +++ b/manifest.json @@ -1,9 +1,9 @@ { - "repos": [ - { - "id": "events", - "organisation": "lnbits", - "repository": "events" - } - ] + "repos": [ + { + "id": "events", + "organisation": "lnbits", + "repository": "events" + } + ] } diff --git a/migrations.py b/migrations.py index 6dba178..77424eb 100644 --- a/migrations.py +++ b/migrations.py @@ -1,5 +1,4 @@ async def m001_initial(db): - await db.execute( """ CREATE TABLE events.events ( @@ -38,7 +37,6 @@ async def m001_initial(db): async def m002_changed(db): - await db.execute( """ CREATE TABLE events.ticket ( @@ -82,10 +80,11 @@ async def m002_changed(db): ) await db.execute("DROP TABLE events.tickets") + async def m003_add_register_timestamp(db): """ Add a column to register the timestamp of ticket register """ await db.execute( "ALTER TABLE events.ticket ADD COLUMN reg_timestamp TIMESTAMP;" - ) # NULL means not registered, or old ticket \ No newline at end of file + ) # NULL means not registered, or old ticket diff --git a/views_api.py b/views_api.py index c0d9809..de53202 100644 --- a/views_api.py +++ b/views_api.py @@ -109,7 +109,13 @@ async def api_ticket_make_ticket(event_id, name, email): memo=f"{event_id}", extra={"tag": "events", "name": name, "email": email}, ) - await create_ticket(payment_hash=payment_hash, wallet=event.wallet, event=event.id, name=name, email=email) + await create_ticket( + payment_hash=payment_hash, + wallet=event.wallet, + event=event.id, + name=name, + email=email, + ) except Exception as e: raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=str(e)) return {"payment_hash": payment_hash, "payment_request": payment_request} @@ -167,6 +173,7 @@ async def api_event_tickets(wallet_id, event_id): @events_ext.get("/api/v1/register/ticket/{ticket_id}") async def api_event_register_ticket(ticket_id): ticket = await get_ticket(ticket_id) + if not ticket: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Ticket does not exist."