Compare commits
No commits in common. "b93818377020cf8c715064176ef23077e36ffd0d" and "d7a25e9bb3c6bee9188185d68fd4ceb44133c1aa" have entirely different histories.
b938183770
...
d7a25e9bb3
2 changed files with 5 additions and 53 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"id": "events",
|
||||
"version": "1.3.0-aio.4",
|
||||
"version": "1.3.0-aio.3",
|
||||
"name": "Events",
|
||||
"repo": "https://git.atitlan.io/aiolabs/events",
|
||||
"short_description": "Sell and register event tickets",
|
||||
|
|
|
|||
56
views_api.py
56
views_api.py
|
|
@ -203,18 +203,6 @@ async def api_event_update(
|
|||
data: CreateEvent,
|
||||
wallet: WalletTypeInfo = Depends(require_admin_key),
|
||||
) -> Event:
|
||||
"""Update an event. The owner can edit any mutable field; the status
|
||||
is derived (admin / `auto_approve` ⇒ approved, otherwise proposed)
|
||||
and is NEVER taken from the request body — that would let owners
|
||||
self-approve.
|
||||
|
||||
Nostr is reconciled against the status transition:
|
||||
approved → approved : re-publish the replaceable NIP-52 event
|
||||
proposed → approved : fresh publish
|
||||
approved → proposed : NIP-09 delete so the public feed drops it
|
||||
until the edit is re-approved
|
||||
proposed → proposed : no-op
|
||||
"""
|
||||
event = await get_event(event_id)
|
||||
if not event:
|
||||
raise HTTPException(
|
||||
|
|
@ -222,49 +210,13 @@ async def api_event_update(
|
|||
)
|
||||
if event.wallet != wallet.wallet.id:
|
||||
raise HTTPException(status_code=HTTPStatus.FORBIDDEN, detail="Not your event.")
|
||||
|
||||
from lnbits.settings import settings
|
||||
|
||||
ext_settings = await get_settings()
|
||||
user_id = wallet.wallet.user
|
||||
is_admin = user_id == settings.super_user or user_id in settings.lnbits_admin_users
|
||||
|
||||
previous_status = event.status
|
||||
|
||||
# Same defaulting as create_event: optional end/closing dates fall
|
||||
# back to start_date when omitted, so an edit that doesn't restate
|
||||
# them doesn't wipe them.
|
||||
if not data.event_end_date:
|
||||
data.event_end_date = data.event_start_date
|
||||
if not data.closing_date:
|
||||
data.closing_date = data.event_end_date
|
||||
|
||||
# Explicit field list — never copy `status` from the request body.
|
||||
for field in (
|
||||
"name",
|
||||
"info",
|
||||
"closing_date",
|
||||
"event_start_date",
|
||||
"event_end_date",
|
||||
"currency",
|
||||
"amount_tickets",
|
||||
"price_per_ticket",
|
||||
"banner",
|
||||
"location",
|
||||
"categories",
|
||||
"extra",
|
||||
):
|
||||
setattr(event, field, getattr(data, field))
|
||||
|
||||
event.status = "approved" if (is_admin or ext_settings.auto_approve) else "proposed"
|
||||
|
||||
for k, v in data.dict().items():
|
||||
setattr(event, k, v)
|
||||
event = await update_event(event)
|
||||
|
||||
if event.status == "approved":
|
||||
# Re-publish the replaceable NIP-52 event if we already announced it.
|
||||
if event.status == "approved" and event.nostr_event_id:
|
||||
await publish_or_delete_nostr_event(event)
|
||||
elif previous_status == "approved":
|
||||
# Take it down from the public feed while it waits for re-approval.
|
||||
await publish_or_delete_nostr_event(event, delete=True)
|
||||
|
||||
return event
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue