From 777c107c63556a5d76191b4c130dbac09f0c9352 Mon Sep 17 00:00:00 2001
From: Arc <33088785+arcbtc@users.noreply.github.com>
Date: Fri, 22 May 2026 20:18:39 +0100
Subject: [PATCH 01/23] feat: UI fixes, ticket waves, ticket image (#52)
* email input fixes
* promo code ui fix
* ticket waves
* works, but horrible slop
* slightly cleaner
* filter most recent
* make
* pyright
---
__init__.py | 3 +-
crud.py | 45 +++-
models.py | 117 +++++++-
services.py | 241 ++++++++++++-----
static/image/ticket.jpg | Bin 0 -> 106602 bytes
static/js/display.js | 57 +++-
static/js/display.vue | 18 +-
static/js/index.js | 502 +++++++++++++++++++++++++++++-----
static/js/index.vue | 582 ++++++++++++++++++++++++++++++----------
static/js/ticket.js | 29 +-
static/js/ticket.vue | 49 ++++
views_api.py | 240 ++++++++++++++---
12 files changed, 1569 insertions(+), 314 deletions(-)
create mode 100644 static/image/ticket.jpg
diff --git a/__init__.py b/__init__.py
index ef37528..827b8d5 100644
--- a/__init__.py
+++ b/__init__.py
@@ -6,12 +6,13 @@ from loguru import logger
from .crud import db
from .tasks import wait_for_paid_invoices
from .views import events_generic_router
-from .views_api import events_api_router, tickets_api_router
+from .views_api import events_api_router, qr_api_router, tickets_api_router
events_ext: APIRouter = APIRouter(prefix="/events", tags=["Events"])
events_ext.include_router(events_generic_router)
events_ext.include_router(events_api_router)
events_ext.include_router(tickets_api_router)
+events_ext.include_router(qr_api_router)
events_static_files = [
{
diff --git a/crud.py b/crud.py
index 3046f0e..930915e 100644
--- a/crud.py
+++ b/crud.py
@@ -1,9 +1,17 @@
from datetime import datetime, timedelta, timezone
+from typing import cast
-from lnbits.db import Database
+from lnbits.db import Database, Filters, Page
from lnbits.helpers import urlsafe_short_hash
-from .models import CreateEvent, Event, Ticket, TicketExtra
+from .models import (
+ CreateEvent,
+ Event,
+ Ticket,
+ TicketExtra,
+ TicketFilters,
+ sync_event_ticket_waves,
+)
db = Database("ext_events")
@@ -51,6 +59,31 @@ async def get_tickets(wallet_ids: str | list[str]) -> list[Ticket]:
)
+async def get_tickets_paginated(
+ wallet_ids: str | list[str], filters: Filters[TicketFilters] | None = None
+) -> Page[Ticket]:
+ if isinstance(wallet_ids, str):
+ wallet_ids = [wallet_ids]
+
+ wallet_where = []
+ values = {}
+ for idx, wallet_id in enumerate(wallet_ids):
+ key = f"wallet_id_{idx}"
+ wallet_where.append(f":{key}")
+ values[key] = wallet_id
+
+ where = [f"wallet IN ({', '.join(wallet_where)})", "paid = true"]
+
+ return await db.fetch_page(
+ "SELECT * FROM events.ticket",
+ where=where,
+ values=values,
+ filters=filters,
+ model=Ticket,
+ table_name="events.ticket",
+ )
+
+
async def delete_ticket(payment_hash: str) -> None:
await db.execute("DELETE FROM events.ticket WHERE id = :id", {"id": payment_hash})
@@ -75,31 +108,35 @@ async def purge_unpaid_tickets(event_id: str) -> None:
async def create_event(data: CreateEvent) -> Event:
event_id = urlsafe_short_hash()
event = Event(id=event_id, time=datetime.now(timezone.utc), **data.dict())
+ event = cast(Event, sync_event_ticket_waves(event))
await db.insert("events.events", event)
return event
async def update_event(event: Event) -> Event:
+ event = cast(Event, sync_event_ticket_waves(event))
await db.update("events.events", event)
return event
async def get_event(event_id: str) -> Event | None:
- return await db.fetchone(
+ event = await db.fetchone(
"SELECT * FROM events.events WHERE id = :id",
{"id": event_id},
Event,
)
+ return cast(Event, sync_event_ticket_waves(event)) if event else None
async def get_events(wallet_ids: str | list[str]) -> list[Event]:
if isinstance(wallet_ids, str):
wallet_ids = [wallet_ids]
q = ",".join([f"'{wallet_id}'" for wallet_id in wallet_ids])
- return await db.fetchall(
+ events = await db.fetchall(
f"SELECT * FROM events.events WHERE wallet IN ({q})",
model=Event,
)
+ return [cast(Event, sync_event_ticket_waves(event)) for event in events]
async def delete_event(event_id: str) -> None:
diff --git a/models.py b/models.py
index fa1569f..331ad6d 100644
--- a/models.py
+++ b/models.py
@@ -1,6 +1,8 @@
-from datetime import datetime
+from datetime import date, datetime
+from uuid import uuid4
from fastapi import Query
+from lnbits.db import FilterModel
from pydantic import BaseModel, EmailStr, Field, validator
@@ -20,8 +22,23 @@ class PromoCode(BaseModel):
return v
+class TicketWave(BaseModel):
+ id: str = Field(default_factory=lambda: uuid4().hex[:8])
+ title: str = "Primary wave"
+ opening_date: str
+ closing_date: str
+ currency: str = "sat"
+ use_ticket_image: bool = False
+ ticket_image_id: str | None = None
+ allow_fiat: bool = False
+ fiat_currency: str = "GBP"
+ amount_tickets: int = Field(default=0, ge=0)
+ price_per_ticket: float = Field(default=0, ge=0)
+
+
class EventExtra(BaseModel):
promo_codes: list[PromoCode] = Field(default_factory=list)
+ ticket_waves: list[TicketWave] = Field(default_factory=list)
conditional: bool = False
min_tickets: int = 1
email_notifications: bool = False
@@ -84,6 +101,8 @@ class PublicEvent(BaseModel):
class TicketExtra(BaseModel):
applied_promo_code: str | None = None
+ ticket_wave_id: str | None = None
+ ticket_wave_title: str | None = None
sats_paid: int | None = None
refund_address: str | None = None
nostr_identifier: str | None = None
@@ -96,6 +115,7 @@ class TicketExtra(BaseModel):
class CreateTicket(BaseModel):
name: str
email: EmailStr
+ ticket_wave_id: str | None = None
promo_code: str | None = None
refund_address: str | None = None
nostr_identifier: str | None = None
@@ -116,6 +136,22 @@ class Ticket(BaseModel):
extra: TicketExtra = Field(default_factory=TicketExtra)
+class NotificationDeliveryResult(BaseModel):
+ attempted: bool = False
+ sent: bool = False
+ error: str | None = None
+
+
+class TicketResendResult(BaseModel):
+ ticket: Ticket
+ email: NotificationDeliveryResult = Field(
+ default_factory=NotificationDeliveryResult
+ )
+ nostr: NotificationDeliveryResult = Field(
+ default_factory=NotificationDeliveryResult
+ )
+
+
class PublicTicket(BaseModel):
event: str
name: str
@@ -131,3 +167,82 @@ class TicketPaymentRequest(BaseModel):
fiat_payment_request: str | None = None
fiat_provider: str | None = None
is_fiat: bool = False
+
+
+class TicketFilters(FilterModel):
+ __search_fields__ = ["event", "name", "email", "id"] # noqa: RUF012
+ __sort_fields__ = [ # noqa: RUF012
+ "time",
+ "event",
+ "name",
+ "email",
+ "registered",
+ "id",
+ ]
+
+ event: str | None = None
+ name: str | None = None
+ email: str | None = None
+ registered: bool | None = None
+ paid: bool | None = None
+ id: str | None = None
+
+
+def _parse_date(value: str) -> date:
+ return datetime.strptime(value, "%Y-%m-%d").date()
+
+
+def ensure_ticket_waves(event: Event | PublicEvent | CreateEvent) -> list[TicketWave]:
+ ticket_waves = list(getattr(event.extra, "ticket_waves", []) or [])
+ if ticket_waves:
+ return ticket_waves
+
+ fallback_opening_date = None
+ event_time = getattr(event, "time", None)
+ if event_time:
+ fallback_opening_date = event_time.date().isoformat()
+ if not fallback_opening_date:
+ fallback_opening_date = event.closing_date
+
+ return [
+ TicketWave(
+ id="primary",
+ title="Primary wave",
+ opening_date=fallback_opening_date,
+ closing_date=event.closing_date,
+ currency=event.currency,
+ allow_fiat=event.allow_fiat,
+ fiat_currency=event.fiat_currency,
+ amount_tickets=getattr(event, "amount_tickets", 0),
+ price_per_ticket=event.price_per_ticket,
+ )
+ ]
+
+
+def sync_event_ticket_waves(event: Event | CreateEvent) -> Event | CreateEvent:
+ ticket_waves = ensure_ticket_waves(event)
+ event.extra.ticket_waves = ticket_waves
+
+ primary_wave = ticket_waves[0]
+ event.closing_date = max(wave.closing_date for wave in ticket_waves)
+ event.currency = primary_wave.currency
+ event.allow_fiat = primary_wave.allow_fiat
+ event.fiat_currency = primary_wave.fiat_currency
+ event.amount_tickets = sum(wave.amount_tickets for wave in ticket_waves)
+ event.price_per_ticket = primary_wave.price_per_ticket
+
+ return event
+
+
+def get_active_ticket_waves(
+ event: Event | PublicEvent, today: date | None = None
+) -> list[TicketWave]:
+ current_day = today or datetime.utcnow().date()
+ return [
+ wave
+ for wave in ensure_ticket_waves(event)
+ if _parse_date(wave.opening_date)
+ <= current_day
+ <= _parse_date(wave.closing_date)
+ and wave.amount_tickets > 0
+ ]
diff --git a/services.py b/services.py
index 159bbdc..057026b 100644
--- a/services.py
+++ b/services.py
@@ -1,15 +1,15 @@
from __future__ import annotations
+import smtplib
from asyncio.tasks import create_task
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+from html import escape
from lnbits.core.models.users import UserNotifications
-from lnbits.core.services.nostr import send_nostr_dm
-from lnbits.core.services.notifications import (
- send_email_notification,
- send_user_notification,
-)
+from lnbits.core.services.notifications import send_user_notification
+from lnbits.helpers import is_valid_email_address
from lnbits.settings import settings
-from lnbits.utils.nostr import normalize_private_key, normalize_public_key
from lnurl import execute
from loguru import logger
@@ -20,13 +20,13 @@ from .crud import (
update_event,
update_ticket,
)
-from .models import Event, Ticket
-
-DEFAULT_NOSTR_RELAYS = [
- "wss://relay.damus.io",
- "wss://relay.primal.net",
- "wss://relay.nostr.band",
-]
+from .models import (
+ Event,
+ NotificationDeliveryResult,
+ Ticket,
+ TicketResendResult,
+ ensure_ticket_waves,
+)
async def set_ticket_paid(ticket: Ticket) -> Ticket:
@@ -39,7 +39,16 @@ async def set_ticket_paid(ticket: Ticket) -> Ticket:
event = await get_event(ticket.event)
assert event, "Couldn't get event from ticket being paid"
event.sold += 1
- event.amount_tickets -= 1
+ ticket_waves = event.extra.ticket_waves or []
+ if ticket_waves:
+ selected_wave = next(
+ (wave for wave in ticket_waves if wave.id == ticket.extra.ticket_wave_id),
+ ticket_waves[0],
+ )
+ if selected_wave.amount_tickets > 0:
+ selected_wave.amount_tickets -= 1
+ elif event.amount_tickets > 0:
+ event.amount_tickets -= 1
await update_event(event)
return ticket
@@ -55,40 +64,12 @@ async def _send_ticket_notification(ticket: Ticket) -> None:
logger.warning(f"Event {ticket.event} not found for ticket notification.")
return
- subject, message = _ticket_notification_message(ticket, event)
- updated = False
-
- if (
- event.extra.email_notifications
- and settings.lnbits_email_notifications_enabled
- and ticket.email
- ):
- try:
- await send_email_notification([ticket.email], message, subject)
- ticket.extra.email_notification_sent = True
- updated = True
- except Exception as exc:
- logger.warning(f"Failed to email ticket {ticket.id}: {exc}")
-
- if (
- event.extra.nostr_notifications
- and settings.is_nostr_notifications_configured()
- and ticket.extra.nostr_identifier
- ):
- try:
- await _send_nostr_ticket_notification(
- ticket.extra.nostr_identifier, message
- )
- ticket.extra.nostr_notification_sent = True
- updated = True
- except Exception as exc:
- logger.warning(f"Failed to send nostr DM for ticket {ticket.id}: {exc}")
-
- if updated:
- await update_ticket(ticket)
+ await _deliver_ticket_notifications(ticket, event)
-async def resend_ticket_email_notification(ticket: Ticket) -> Ticket:
+async def resend_ticket_email_notification(
+ ticket: Ticket, base_url: str | None = None
+) -> TicketResendResult:
event = await get_event(ticket.event)
if not event:
raise ValueError("Event does not exist.")
@@ -96,11 +77,10 @@ async def resend_ticket_email_notification(ticket: Ticket) -> Ticket:
raise ValueError("Email notifications are not enabled.")
if not ticket.email:
raise ValueError("Ticket does not have an email address.")
+ if base_url:
+ ticket.extra.ticket_base_url = base_url.rstrip("/")
- subject, message = _ticket_notification_message(ticket, event)
- await send_email_notification([ticket.email], message, subject)
- ticket.extra.email_notification_sent = True
- return await update_ticket(ticket)
+ return await _deliver_ticket_notifications(ticket, event)
def _ticket_notification_message(ticket: Ticket, event: Event) -> tuple[str, str]:
@@ -117,18 +97,144 @@ def _ticket_notification_message(ticket: Ticket, event: Event) -> tuple[str, str
return subject, f"{body}\n\nOpen it here: {ticket_url}"
-async def _send_nostr_ticket_notification(identifier: str, message: str) -> None:
- if "@" in identifier:
- await send_user_notification(
- UserNotifications(nostr_identifier=identifier),
- message,
- "text_message",
- )
- return
+def _ticket_delivery_message(ticket: Ticket, event: Event, base_message: str) -> str:
+ ticket_image_url = _ticket_image_url(ticket, event)
+ if not ticket_image_url:
+ return base_message
- private_key = normalize_private_key(settings.lnbits_nostr_notifications_private_key)
- public_key = normalize_public_key(identifier)
- await send_nostr_dm(private_key, public_key, message, DEFAULT_NOSTR_RELAYS)
+ return f"{base_message}\n\nTicket image: {ticket_image_url}"
+
+
+def _ticket_email_html_message(ticket: Ticket, event: Event, base_message: str) -> str:
+ text_message = _ticket_delivery_message(ticket, event, base_message)
+ html_message = f"
{escape(text_message).replace(chr(10), '
')}
"
+ ticket_image_url = _ticket_image_url(ticket, event)
+ if not ticket_image_url:
+ return html_message
+
+ return (
+ f"{html_message}"
+ f'})
'
+ )
+
+
+def _ticket_notification_payload(ticket: Ticket, event: Event) -> tuple[str, str, str]:
+ subject, base_message = _ticket_notification_message(ticket, event)
+ text_message = _ticket_delivery_message(ticket, event, base_message)
+ html_message = _ticket_email_html_message(ticket, event, base_message)
+ return subject, text_message, html_message
+
+
+def _supports_nostr_delivery(identifier: str | None) -> bool:
+ return bool(identifier and "@" in identifier)
+
+
+async def _deliver_ticket_notifications(
+ ticket: Ticket, event: Event
+) -> TicketResendResult:
+ subject, text_message, html_message = _ticket_notification_payload(ticket, event)
+ updated = False
+ result = TicketResendResult(
+ ticket=ticket,
+ email=NotificationDeliveryResult(
+ attempted=bool(
+ event.extra.email_notifications
+ and settings.lnbits_email_notifications_enabled
+ and ticket.email
+ )
+ ),
+ nostr=NotificationDeliveryResult(
+ attempted=bool(
+ event.extra.nostr_notifications
+ and settings.is_nostr_notifications_configured()
+ and ticket.extra.nostr_identifier
+ )
+ ),
+ )
+
+ if result.email.attempted:
+ try:
+ await _send_ticket_email_notification(
+ [ticket.email], text_message, subject, html_message
+ )
+ ticket.extra.email_notification_sent = True
+ result.email.sent = True
+ updated = True
+ except Exception as exc:
+ logger.warning(f"Failed to email ticket {ticket.id}: {exc}")
+ result.email.error = str(exc)
+
+ if result.nostr.attempted and not _supports_nostr_delivery(
+ ticket.extra.nostr_identifier
+ ):
+ result.nostr.error = "Only NIP-05 Nostr identifiers are supported."
+ elif result.nostr.attempted:
+ try:
+ identifier = ticket.extra.nostr_identifier
+ assert identifier is not None
+ await _send_nostr_ticket_notification(identifier, text_message)
+ ticket.extra.nostr_notification_sent = True
+ result.nostr.sent = True
+ updated = True
+ except Exception as exc:
+ logger.warning(f"Failed to send nostr DM for ticket {ticket.id}: {exc}")
+ result.nostr.error = str(exc)
+
+ if updated:
+ result.ticket = await update_ticket(ticket)
+ return result
+
+
+async def _send_nostr_ticket_notification(identifier: str, message: str) -> None:
+ await send_user_notification(
+ UserNotifications(nostr_identifier=identifier),
+ message,
+ "text_message",
+ )
+
+
+async def _send_ticket_email_notification(
+ to_emails: list[str],
+ message: str,
+ subject: str,
+ html_message: str | None = None,
+) -> None:
+ if not settings.lnbits_email_notifications_enabled:
+ raise ValueError("Email notifications are disabled")
+ if not is_valid_email_address(settings.lnbits_email_notifications_email):
+ raise ValueError(
+ f"Invalid from email address: {settings.lnbits_email_notifications_email}"
+ )
+ if not to_emails:
+ raise ValueError("No email addresses provided")
+ for email in to_emails:
+ if not is_valid_email_address(email):
+ raise ValueError(f"Invalid email address: {email}")
+
+ msg = MIMEMultipart("alternative")
+ msg["From"] = settings.lnbits_email_notifications_email
+ msg["To"] = ", ".join(to_emails)
+ msg["Subject"] = subject
+ msg.attach(MIMEText(message, "plain"))
+ if html_message:
+ msg.attach(MIMEText(html_message, "html"))
+
+ username = (
+ settings.lnbits_email_notifications_username
+ or settings.lnbits_email_notifications_email
+ )
+ with smtplib.SMTP(
+ settings.lnbits_email_notifications_server,
+ settings.lnbits_email_notifications_port,
+ ) as smtp_server:
+ smtp_server.starttls()
+ smtp_server.login(username, settings.lnbits_email_notifications_password)
+ smtp_server.sendmail(
+ settings.lnbits_email_notifications_email,
+ to_emails,
+ msg.as_string(),
+ )
def _ticket_url(ticket: Ticket) -> str:
@@ -136,6 +242,19 @@ def _ticket_url(ticket: Ticket) -> str:
return f"{base_url}/events/ticket/{ticket.id}"
+def _ticket_image_url(ticket: Ticket, event: Event) -> str | None:
+ waves = ensure_ticket_waves(event)
+ wave = next(
+ (wave for wave in waves if wave.id == ticket.extra.ticket_wave_id),
+ waves[0],
+ )
+ if not wave.use_ticket_image:
+ return None
+
+ base_url = (ticket.extra.ticket_base_url or settings.lnbits_baseurl).rstrip("/")
+ return f"{base_url}/events/api/v1/qr/{ticket.id}"
+
+
async def refund_tickets(event_id: str):
"""
Refund tickets for an event that has not met the minimum ticket requirement.
diff --git a/static/image/ticket.jpg b/static/image/ticket.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e05d9318a5dd38ef26268c0c516f0c057a115473
GIT binary patch
literal 106602
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