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/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/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 5b9d53b..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 (
@@ -81,3 +79,12 @@ 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
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
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."