Skip to content

feat: back Buzz Events with Zoom Meetings - #292

Merged
harshtandiya merged 1 commit into
mainfrom
backport-288-to-main
Jul 27, 2026
Merged

feat: back Buzz Events with Zoom Meetings#292
harshtandiya merged 1 commit into
mainfrom
backport-288-to-main

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated backport of #288 to main.

* feat: back Buzz Events with Zoom Meetings (create, sync, ticket registration)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* ci: install zoom_integration app for server tests

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor!: follow Zoom Session Registration rename

zoom_integration renamed Zoom Webinar Registration to Zoom Session Registration.
Point the Event Ticket custom field, its creation in install.py, the registration
created on ticket submit and get_ticket_details at the new name, and rename the
field itself to zoom_session_registration.

rename_field copies values into a field that must already exist, and the
after_migrate hook that creates our custom fields runs after patches, so the
patch calls create_zoom_integration_custom_fields() first, then copies, then
drops the old Custom Field. The old column is left for `bench trim-tables`.

Requires zoom_integration to be migrated first: until it is, the custom field
points at a doctype that does not exist yet.

The dashboard is untouched - get_ticket_details still returns zoom_join_url,
zoom_webinar and zoom_meeting under the same keys.

BREAKING CHANGE: Event Ticket.zoom_webinar_registration is now
zoom_session_registration. Any REST read, custom report or client script naming
the old fieldname breaks.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* feat(events): group Zoom create/view actions on Buzz Event

Move the single "Create Webinar on Zoom" button into a "Create on Zoom" group
and add the meeting equivalents, so an event can be backed by either a Zoom
Webinar or a Zoom Meeting from the form.

Viewing a meeting resolves zoom_link off the Zoom Meeting record rather than
building a URL, since Zoom Meeting is named by hash and the docname is not the
Zoom id.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* refactor!: follow the Zoom session dynamic reference

Zoom Session Registration now carries reference_doctype + reference_name
instead of separate webinar and meeting links. Event Ticket builds that pair
from whichever the event has, and get_ticket_details returns
zoom_reference_doctype / zoom_reference_name in place of zoom_webinar /
zoom_meeting.

The Buzz Event fields stay two separate links for now; folding those in wants
a UX pass on the create/view buttons first.

"View Meeting" drops the round-trip that fetched zoom_link. It existed because
Zoom Meeting used hash naming; the docname is the Zoom meeting ID now, so the
URL is built the same way as the webinar one.

BREAKING CHANGE: get_ticket_details no longer returns zoom_webinar or
zoom_meeting. Requires zoom_integration with the dynamic session reference.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* feat(events): pick the Zoom action from the event category

Buzz Events could only be backed by a Zoom Webinar: the desk showed a
"Create on Zoom" group holding both a webinar and a meeting button, and
everything keyed off the literal category name "Webinars".

A new "Zoom Meeting" category picks the meeting path instead. Only one
session type applies to an event now, so the button group collapses to a
single button labelled for that type -- "Create Webinar on Zoom" or
"Create Meeting on Zoom", and the matching View button once created.

The category name was hardcoded in eight places, and a second session type
would have doubled that, so the mapping now lives in one constant per layer:
ZOOM_BACKED_CATEGORIES in buzz/utils.py, ZOOM_SESSION_BY_CATEGORY in
buzz_event.js, and isZoomBackedCategory in the dashboard. The two depends_on
expressions stay inline because eval strings cannot import.

Behaviour that was webinar-only now applies to both, since Zoom needs the
same things either way: a last name on every registrant, attach_email_ticket
off by default, and the free-event checkbox.

isWebinar becomes isZoomEvent in the booking form, which is what it actually
meant. create_event_categories is called on migrate so the new category
reaches existing sites; the insert is ignore_if_duplicate, so re-running it
only fills in what is missing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* refactor!: rename free_webinar to free_event

The flag hides pricing, payment sections and the ticket type picker. None of
that is webinar-specific, and it now applies to Zoom Meeting events too, so
the name was wrong on two counts.

Both doctypes rename in one patch. Event Proposal maps onto Buzz Event
through get_mapped_doc, which matches on fieldname with no field_map, so
renaming one side alone would have stopped carrying the flag over without
raising anything. A test covers that carry-over.

SuccessMessage took an isWebinar prop fed by this flag; it selects
registration wording over booking wording, so it becomes isRegistration.

BREAKING CHANGE: the booking payloads return free_event instead of
free_webinar. API clients reading the old key must be updated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* test: stop the ticket webinar test from needing a live Zoom token

Zoom Webinar fetches its own token rather than going through api.py, so
patching `requests` alone left the token call live. It passed locally, where
credentials exist, and failed in CI where they do not.

Uses mock_zoom_post, which patches both, matching the fix already applied to
the zoom_integration tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit f3ced3f)
@github-actions github-actions Bot added the backport This PR / Issue is a backport for a branch other than develop label Jul 27, 2026
@harshtandiya
harshtandiya enabled auto-merge July 27, 2026 13:20
@harshtandiya
harshtandiya disabled auto-merge July 27, 2026 13:21
@harshtandiya
harshtandiya merged commit 5582746 into main Jul 27, 2026
7 checks passed
@harshtandiya
harshtandiya deleted the backport-288-to-main branch July 27, 2026 13:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport This PR / Issue is a backport for a branch other than develop

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant