diff --git a/vc_zoom/README.md b/vc_zoom/README.md index 16f9879a4..b951e7994 100644 --- a/vc_zoom/README.md +++ b/vc_zoom/README.md @@ -11,6 +11,10 @@ ## Changelog +### 3.3.2 + +- Stop using the (incorrect) "room" terminology for Zoom meetings, and call them "meetings" instead + ### 3.3.1 - Adapt to Indico 3.3.5 changes @@ -96,7 +100,7 @@ - Improve logging when a Zoom API request fails - Fail more gracefully if no Zoom account could be found for a user -- Allow using the same name for multiple Zoom rooms +- Allow using the same name for multiple Zoom meetings - Update the join url when changing the passcode - Provide an alternative method of looking up the Zoom user corresponding to an Indico user - Always show the full join link and passcode to event managers @@ -107,7 +111,7 @@ - Show detailed error when deleting a meeting fails - Do not allow passcodes that are too long for zoom - Remove the "Assistant Zoom ID" logic due to problems with Zoom's API rate limits (all meetings created were counted against the assistant's rate limit instead of the host's); this means the host can no longer be changed, but Indico instead provides an option to event managers to make themselves a co-host. -- Fix an error when changing the linked object of a recurring Zoom room in Indico +- Fix an error when changing the linked object of a recurring Zoom meeting in Indico - Include Zoom join links in the event's ical export (note: only Zoom meetings with a public passcode are displayed unless you have at least Indico v2.3.3) - Skip deleted Zoom meetings when cloning events - Mark Zoom meetings as deleted when receiving the corresponding webhook event diff --git a/vc_zoom/indico_vc_zoom/cli.py b/vc_zoom/indico_vc_zoom/cli.py index 139740e0f..830ab5002 100644 --- a/vc_zoom/indico_vc_zoom/cli.py +++ b/vc_zoom/indico_vc_zoom/cli.py @@ -19,8 +19,8 @@ def cli(): @cli.command() @click.option('--status', type=click.Choice(['deleted', 'created'])) -def rooms(status=None): - """Lists all Zoom rooms""" +def meetings(status=None): + """Lists all Zoom meetings""" room_query = VCRoom.query.filter_by(type='zoom') table_data = [['ID', 'Name', 'Status', 'Zoom ID']] diff --git a/vc_zoom/indico_vc_zoom/controllers.py b/vc_zoom/indico_vc_zoom/controllers.py index d555f7e65..04d4008f0 100644 --- a/vc_zoom/indico_vc_zoom/controllers.py +++ b/vc_zoom/indico_vc_zoom/controllers.py @@ -91,13 +91,13 @@ def _handle_zoom_event(self, event, payload): if not vc_room: # This usually happens when a room wasn't created via indico - current_plugin.logger.debug('Action for unhandled Zoom room: %s', meeting_id) + current_plugin.logger.debug('Action for unhandled Zoom meeting: %s', meeting_id) return if event in ('meeting.updated', 'webinar.updated'): current_plugin.refresh_room(vc_room, None) elif event in ('meeting.deleted', 'webinar.deleted'): - current_plugin.logger.info('Zoom room deleted: %s', meeting_id) + current_plugin.logger.info('Zoom meeting deleted: %s', meeting_id) vc_room.status = VCRoomStatus.deleted else: current_plugin.logger.warning('Unhandled Zoom webhook payload: %s', event) diff --git a/vc_zoom/indico_vc_zoom/fixtures.py b/vc_zoom/indico_vc_zoom/fixtures.py index 327393ad5..c7cbc45a4 100644 --- a/vc_zoom/indico_vc_zoom/fixtures.py +++ b/vc_zoom/indico_vc_zoom/fixtures.py @@ -14,7 +14,7 @@ @pytest.fixture def zoom_plugin(app): - """Return a callable which lets you create dummy Zoom room occurrences.""" + """Return a callable which lets you create dummy Zoom meeting occurrences.""" from indico_vc_zoom.plugin import ZoomPlugin plugin = ZoomPlugin(plugin_engine, app) diff --git a/vc_zoom/indico_vc_zoom/forms.py b/vc_zoom/indico_vc_zoom/forms.py index 1dfb50654..f09d17341 100644 --- a/vc_zoom/indico_vc_zoom/forms.py +++ b/vc_zoom/indico_vc_zoom/forms.py @@ -69,21 +69,21 @@ class VCRoomForm(VCRoomFormBase): mute_audio = BooleanField(_('Mute audio'), widget=SwitchWidget(), - description=_('Participants will join the VC room muted by default ')) + description=_('Participants will join the meeting muted by default ')) mute_host_video = BooleanField(_('Mute video (host)'), widget=SwitchWidget(), - description=_('The host will join the VC room with video disabled')) + description=_('The host will join the meeting with video disabled')) mute_participant_video = BooleanField(_('Mute video (participants)'), widget=SwitchWidget(), - description=_('Participants will join the VC room with video disabled')) + description=_('Participants will join the meeting with video disabled')) waiting_room = BooleanField(_('Waiting room'), widget=SwitchWidget(), description=_('Participants may be kept in a waiting room by the host')) - description = TextAreaField(_('Description'), description=_('Optional description for this room')) + description = TextAreaField(_('Description'), description=_('Optional description for this meeting')) def __init__(self, *args, **kwargs): defaults = kwargs['obj'] diff --git a/vc_zoom/indico_vc_zoom/plugin.py b/vc_zoom/indico_vc_zoom/plugin.py index fe68ef7bc..cb2722e35 100644 --- a/vc_zoom/indico_vc_zoom/plugin.py +++ b/vc_zoom/indico_vc_zoom/plugin.py @@ -88,15 +88,15 @@ class PluginSettingsForm(VCPluginSettingsFormBase): mute_audio = BooleanField(_('Mute audio'), widget=SwitchWidget(), - description=_('Participants will join the VC room muted by default ')) + description=_('Participants will join the meeting muted by default ')) mute_host_video = BooleanField(_('Mute video (host)'), widget=SwitchWidget(), - description=_('The host will join the VC room with video disabled')) + description=_('The host will join the meeting with video disabled')) mute_participant_video = BooleanField(_('Mute video (participants)'), widget=SwitchWidget(), - description=_('Participants will join the VC room with video disabled')) + description=_('Participants will join the meeting with video disabled')) join_before_host = BooleanField(_('Join Before Host'), widget=SwitchWidget(), @@ -108,7 +108,8 @@ class PluginSettingsForm(VCPluginSettingsFormBase): description=_('Participants may be kept in a waiting room by the host')) creation_email_footer = TextAreaField(_('Creation email footer'), widget=TinyMCEWidget(), - description=_('Footer to append to emails sent upon creation of a VC room')) + description=_('Footer to append to emails sent upon creation of a Zoom ' + 'meeting')) send_host_url = BooleanField(_('Send host URL'), widget=SwitchWidget(), @@ -230,8 +231,8 @@ def update_data_association(self, event, vc_room, room_assoc, data): self.refresh_room(vc_room, event) if vc_room.data.get('registration_required'): raise UserValueError( - _('The room "{}" is using Zoom registration and thus cannot be attached to another event') - .format(vc_room.name) + _('The meeting "{}" is using Zoom registration and thus cannot be attached to another ' + 'event').format(vc_room.name) ) # this means we are updating an existing meeting with a new vc_room-event association update_zoom_meeting(vc_room.data['zoom_id'], { @@ -298,14 +299,14 @@ def update_data_vc_room(self, vc_room, data, is_new=False): flag_modified(vc_room, 'data') def create_room(self, vc_room, event): - """Create a new Zoom room for an event, given a VC room. + """Create a new Zoom meeting for an event, given a VC room. - In order to create the Zoom room, the function will try to get + In order to create the Zoom meeting, the function will try to get a valid e-mail address for the user in question, which can be use with the Zoom API. - :param vc_room: the VC room from which to create the Zoom room - :param event: the event to the Zoom room will be attached + :param vc_room: the VC room from which to create the Zoom meeting + :param event: the event to the Zoom meeting will be attached """ client = ZoomIndicoClient() host = principal_from_identifier(vc_room.data['host']) @@ -357,8 +358,8 @@ def create_room(self, vc_room, event): else: meeting_obj = client.create_meeting(host_email, **kwargs) except HTTPError as e: - self.logger.exception('Error creating Zoom Room: %s', e.response.content) - raise VCRoomError(_('Could not create the room in Zoom. Please contact support if the error persists')) + self.logger.exception('Error creating Zoom meeting: %s', e.response.content) + raise VCRoomError(_('Could not create the meeting in Zoom. Please contact support if the error persists')) vc_room.data.update({ 'zoom_id': str(meeting_obj['id']), @@ -473,13 +474,13 @@ def clone_room(self, old_event_vc_room, link_object): # mark room as deleted vc_room.status = VCRoomStatus.deleted flash( - _('The room "{}" no longer exists in Zoom and was removed from the event').format(vc_room.name), + _('The meeting "{}" no longer exists in Zoom and was removed from the event').format(vc_room.name), 'warning' ) return None if vc_room.data.get('registration_required'): - flash(_('The room "{}" is using Zoom registration and thus cannot be attached to the new event') + flash(_('The meeting "{}" is using Zoom registration and thus cannot be attached to the new event') .format(vc_room.name), 'warning') return None diff --git a/vc_zoom/indico_vc_zoom/templates/emails/remote_deleted.html b/vc_zoom/indico_vc_zoom/templates/emails/remote_deleted.html index 31904dfb9..bdeff7969 100644 --- a/vc_zoom/indico_vc_zoom/templates/emails/remote_deleted.html +++ b/vc_zoom/indico_vc_zoom/templates/emails/remote_deleted.html @@ -6,7 +6,7 @@ {% block header -%}
- The Zoom room "{{ vc_room.name }}" has been deleted from the Zoom server since it has not been used by any recent event. + The Zoom meeting "{{ vc_room.name }}" has been deleted from the Zoom server since it has not been used by any recent event.
You won't be able to attach it to any future events. If you need to do so, please create a new room. diff --git a/vc_zoom/indico_vc_zoom/util.py b/vc_zoom/indico_vc_zoom/util.py index 12f238886..b5671aea4 100644 --- a/vc_zoom/indico_vc_zoom/util.py +++ b/vc_zoom/indico_vc_zoom/util.py @@ -123,11 +123,11 @@ def fetch_zoom_meeting(vc_room, client=None, is_webinar=False): except HTTPError as e: if e.response.status_code in {400, 404}: # Indico will automatically mark this room as deleted - raise VCRoomNotFoundError(_('This room has been deleted from Zoom')) + raise VCRoomNotFoundError(_('This meeting has been deleted from Zoom')) else: from indico_vc_zoom.plugin import ZoomPlugin - ZoomPlugin.logger.exception('Error getting Zoom Room: %s', e.response.content) - raise VCRoomError(_('Problem fetching room from Zoom. Please contact support if the error persists.')) + ZoomPlugin.logger.exception('Error getting Zoom meeting: %s', e.response.content) + raise VCRoomError(_('Problem fetching meeting from Zoom. Please contact support if the error persists.')) def update_zoom_meeting(zoom_id, changes, is_webinar=False): @@ -149,7 +149,7 @@ def update_zoom_meeting(zoom_id, changes, is_webinar=False): if e.response.json()['code'] == 3001: # "Meeting does not exist" - raise VCRoomNotFoundError(_('Room no longer exists in Zoom')) + raise VCRoomNotFoundError(_('Meeting no longer exists in Zoom')) raise VCRoomError(_("Can't update meeting. Please contact support if the error persists.")) diff --git a/vc_zoom/pyproject.toml b/vc_zoom/pyproject.toml index bd060d2df..3405f0815 100644 --- a/vc_zoom/pyproject.toml +++ b/vc_zoom/pyproject.toml @@ -2,7 +2,7 @@ name = 'indico-plugin-vc-zoom' description = 'Zoom video-conferencing plugin for Indico' readme = 'README.md' -version = '3.3.1' +version = '3.3.2' license = 'MIT' authors = [ { name = 'Indico Team', email = 'indico-team@cern.ch' },