Compare commits
No commits in common. "1fb96bfe3cd7c325c89657372100ad800677800c" and "66076d6ca75295ce27bd68c8b6e87801ea83dcb5" have entirely different histories.
1fb96bfe3c
...
66076d6ca7
2 changed files with 1 additions and 51 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"id": "events",
|
"id": "events",
|
||||||
"version": "1.6.1-aio.5",
|
"version": "1.6.1-aio.4",
|
||||||
"name": "Events",
|
"name": "Events",
|
||||||
"repo": "https://git.atitlan.io/aiolabs/events",
|
"repo": "https://git.atitlan.io/aiolabs/events",
|
||||||
"short_description": "Sell and register event tickets",
|
"short_description": "Sell and register event tickets",
|
||||||
|
|
|
||||||
50
views_api.py
50
views_api.py
|
|
@ -47,7 +47,6 @@ from .crud import (
|
||||||
get_settings,
|
get_settings,
|
||||||
get_ticket,
|
get_ticket,
|
||||||
get_tickets,
|
get_tickets,
|
||||||
get_tickets_by_event,
|
|
||||||
get_tickets_by_payment_hash,
|
get_tickets_by_payment_hash,
|
||||||
get_tickets_by_user_id,
|
get_tickets_by_user_id,
|
||||||
purge_unpaid_tickets,
|
purge_unpaid_tickets,
|
||||||
|
|
@ -833,52 +832,3 @@ async def api_event_register_ticket(
|
||||||
ticket.reg_timestamp = datetime.now(timezone.utc)
|
ticket.reg_timestamp = datetime.now(timezone.utc)
|
||||||
ticket = await update_ticket(ticket)
|
ticket = await update_ticket(ticket)
|
||||||
return ticket
|
return ticket
|
||||||
|
|
||||||
|
|
||||||
@tickets_api_router.get("/event/{event_id}/stats")
|
|
||||||
async def api_event_ticket_stats(
|
|
||||||
event_id: str,
|
|
||||||
key_info: WalletTypeInfo = Depends(require_admin_key),
|
|
||||||
) -> dict:
|
|
||||||
"""Door-scanner roster + counts for one event, organizer-only.
|
|
||||||
|
|
||||||
Mirrors the `events_list_event_tickets` nostr-transport RPC for
|
|
||||||
callers that don't hold a raw user prvkey (the webapp post-#9, in
|
|
||||||
particular). Auth: wallet admin_key + the event's wallet must be
|
|
||||||
in the caller's wallet set.
|
|
||||||
"""
|
|
||||||
event = await get_event(event_id)
|
|
||||||
if not event:
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=HTTPStatus.NOT_FOUND, detail="Event does not exist."
|
|
||||||
)
|
|
||||||
|
|
||||||
user = await get_user(key_info.wallet.user)
|
|
||||||
owned_wallet_ids = user.wallet_ids if user else [key_info.wallet.id]
|
|
||||||
if event.wallet not in owned_wallet_ids:
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=HTTPStatus.FORBIDDEN,
|
|
||||||
detail="You do not own this event.",
|
|
||||||
)
|
|
||||||
|
|
||||||
tickets = await get_tickets_by_event(event_id)
|
|
||||||
paid_tickets = [t for t in tickets if t.paid]
|
|
||||||
registered_count = sum(1 for t in paid_tickets if t.registered)
|
|
||||||
|
|
||||||
return {
|
|
||||||
"event_id": event_id,
|
|
||||||
"sold": len(paid_tickets),
|
|
||||||
"registered": registered_count,
|
|
||||||
"remaining": len(paid_tickets) - registered_count,
|
|
||||||
"tickets": [
|
|
||||||
{
|
|
||||||
"id": t.id,
|
|
||||||
"name": t.name,
|
|
||||||
"registered": t.registered,
|
|
||||||
"registered_at": (
|
|
||||||
t.reg_timestamp.isoformat() if t.reg_timestamp else None
|
|
||||||
),
|
|
||||||
}
|
|
||||||
for t in paid_tickets
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue