mirror of
https://github.com/lucaspalomodevelop/indico-plugins.git
synced 2026-03-20 02:26:12 +00:00
VC/Zoom: Add proper password visibility option
This commit is contained in:
parent
80214c2a57
commit
ead1b7ce13
@ -18,15 +18,13 @@ from indico_vc_zoom import _
|
||||
class ZoomAdvancedFormMixin(object):
|
||||
# Advanced options (per event)
|
||||
|
||||
show_password = BooleanField(_('Show Password'),
|
||||
widget=SwitchWidget(),
|
||||
description=_("Show the Zoom Room Password on the event page"))
|
||||
show_autojoin = BooleanField(_('Show Auto-join URL'),
|
||||
widget=SwitchWidget(),
|
||||
description=_("Show the auto-join URL on the event page"))
|
||||
show_phone_numbers = BooleanField(_('Show Phone Access numbers'),
|
||||
widget=SwitchWidget(),
|
||||
description=_("Show a link to the list of phone access numbers"))
|
||||
password_visibility = IndicoRadioField(_("Password visibility"),
|
||||
description=_("Who should be able to know this meeting's password"),
|
||||
orientation='horizontal',
|
||||
choices=[
|
||||
('everyone', _('Everyone')),
|
||||
('logged_in', _('Logged-in users')),
|
||||
('no_one', _("No one"))])
|
||||
|
||||
|
||||
class VCRoomAttachForm(VCRoomAttachFormBase, ZoomAdvancedFormMixin):
|
||||
@ -36,13 +34,15 @@ class VCRoomAttachForm(VCRoomAttachFormBase, ZoomAdvancedFormMixin):
|
||||
class VCRoomForm(VCRoomFormBase, ZoomAdvancedFormMixin):
|
||||
"""Contains all information concerning a Zoom booking."""
|
||||
|
||||
advanced_fields = {'show_password', 'show_autojoin', 'show_phone_numbers'} | VCRoomFormBase.advanced_fields
|
||||
advanced_fields = {'mute_audio', 'mute_host_video', 'mute_participant_video'} | VCRoomFormBase.advanced_fields
|
||||
|
||||
skip_fields = advanced_fields | VCRoomFormBase.conditional_fields
|
||||
|
||||
description = TextAreaField(_('Description'), description=_('The description of the room'))
|
||||
|
||||
owner_choice = IndicoRadioField(_("Owner of Room"), [DataRequired()],
|
||||
choices=[('myself', _("Myself")), ('someone_else', _("Someone else"))])
|
||||
|
||||
owner_user = PrincipalField(_("User"),
|
||||
[HiddenUnless('owner_choice', 'someone_else'), DataRequired()])
|
||||
|
||||
|
||||
@ -194,12 +194,7 @@ class ZoomPlugin(VCPluginMixin, IndicoPlugin):
|
||||
if new_schedule_args != current_schedule_args:
|
||||
_update_zoom_meeting(vc_room.data['zoom_id'], new_schedule_args)
|
||||
|
||||
room_assoc.data.update({key: data.pop(key) for key in [
|
||||
'show_password',
|
||||
'show_autojoin',
|
||||
'show_phone_numbers'
|
||||
]})
|
||||
|
||||
room_assoc.data['password_visibility'] = data.pop('password_visibility')
|
||||
flag_modified(room_assoc, 'data')
|
||||
|
||||
def update_data_vc_room(self, vc_room, data):
|
||||
@ -272,6 +267,7 @@ class ZoomPlugin(VCPluginMixin, IndicoPlugin):
|
||||
vc_room.data.update({
|
||||
'zoom_id': unicode(meeting_obj['id']),
|
||||
'url': meeting_obj['join_url'],
|
||||
'public_url': meeting_obj['join_url'].split('?')[0],
|
||||
'start_url': meeting_obj['start_url'],
|
||||
'password': meeting_obj['password'],
|
||||
'owner': owner.identifier
|
||||
@ -324,7 +320,8 @@ class ZoomPlugin(VCPluginMixin, IndicoPlugin):
|
||||
zoom_meeting = _fetch_zoom_meeting(vc_room)
|
||||
vc_room.name = zoom_meeting['topic']
|
||||
vc_room.data.update({
|
||||
'url': zoom_meeting['start_url'],
|
||||
'url': zoom_meeting['join_url'],
|
||||
'public_url': zoom_meeting['join_url'].split('?')[0],
|
||||
'zoom_id': zoom_meeting['id']
|
||||
})
|
||||
flag_modified(vc_room, 'data')
|
||||
@ -350,21 +347,15 @@ class ZoomPlugin(VCPluginMixin, IndicoPlugin):
|
||||
'mute_host_video': self.settings.get('mute_host_video'),
|
||||
'mute_participant_video': self.settings.get('mute_participant_video'),
|
||||
'waiting_room': self.settings.get('waiting_room'),
|
||||
'show_autojoin': True,
|
||||
'show_phone_numbers': True,
|
||||
'show_password': True,
|
||||
'owner_choice': 'myself',
|
||||
'owner_user': None
|
||||
'owner_user': None,
|
||||
'password_visibility': 'logged_in'
|
||||
})
|
||||
return defaults
|
||||
|
||||
def get_vc_room_attach_form_defaults(self, event):
|
||||
defaults = super(ZoomPlugin, self).get_vc_room_attach_form_defaults(event)
|
||||
defaults.update({
|
||||
'show_autojoin': True,
|
||||
'show_phone_numbers': True,
|
||||
'show_password': True
|
||||
})
|
||||
defaults['password_visibility'] = 'logged_in'
|
||||
return defaults
|
||||
|
||||
def can_manage_vc_room(self, user, room):
|
||||
|
||||
@ -1,6 +1,21 @@
|
||||
{% macro render_join_button(vc_room, extra_classes="") %}
|
||||
<a class="i-button highlight {{ extra_classes }}"
|
||||
href="{{ vc_room.data.url }}" target="_blank">
|
||||
{% trans %}Join{% endtrans %}
|
||||
</a>
|
||||
{% macro render_join_button(vc_room, event_vc_room, extra_classes="", is_manager=false) %}
|
||||
{% if event_vc_room.data.password_visibility == 'everyone' or is_manager or
|
||||
(session.user and event_vc_room.data.password_visibility == 'logged_in') %}
|
||||
<a class="i-button icon-play highlight {{ extra_classes }}"
|
||||
href="{{ vc_room.data.url }}" target="_blank">
|
||||
{% trans %}Join{% endtrans %}
|
||||
</a>
|
||||
{% elif event_vc_room.data.password_visibility == 'no_one' %}
|
||||
<a class="i-button icon-lock-center warning {{ extra_classes }}"
|
||||
title="{% trans %}You will need a password to join this Zoom meeting{% endtrans %}"
|
||||
href="{{ vc_room.data.public_url }}">
|
||||
{% trans %}Join{% endtrans %}
|
||||
</a>
|
||||
{% else %}
|
||||
<a class="i-button icon-lock-center {{ extra_classes }}"
|
||||
title="{% trans %}This Zoom Meeting can only be seen by logged in users{% endtrans %}"
|
||||
href="{{ url_for_login(request.relative_url) }}">
|
||||
{% trans %}Please log in{% endtrans %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
@ -2,5 +2,5 @@
|
||||
{% from 'vc_zoom:buttons.html' import render_join_button %}
|
||||
|
||||
{% block buttons %}
|
||||
{{ render_join_button(vc_room, "i-button-small event-service-right-button join-button") }}
|
||||
{{ render_join_button(vc_room, event_vc_room, "i-button-small event-service-right-button join-button") }}
|
||||
{% endblock %}
|
||||
|
||||
@ -2,22 +2,17 @@
|
||||
{% set owner = vc_room.data.owner %}
|
||||
{% set phone_link = settings.get('zoom_phone_link') %}
|
||||
<dl>
|
||||
<dt>{% trans %}Name{% endtrans %}</dt>
|
||||
<dd>{{ vc_room.name }}</dd>
|
||||
<dt>{% trans %}Zoom Meeting ID{% endtrans %}</dt>
|
||||
<dt>{% trans %}Meeting ID{% endtrans %}</dt>
|
||||
<dd>{{ vc_room.data.zoom_id }}</dd>
|
||||
{% if owner %}
|
||||
<dt>{% trans %}Owner{% endtrans %}</dt>
|
||||
<dd>{{ (owner|decodeprincipal).full_name }}</dd>
|
||||
{% endif %}
|
||||
{% if vc_room.data.password %}
|
||||
{% if event_vc_room.data.password_visibility == 'everyone' or is_manager or
|
||||
(session.user and event_vc_room.data.password_visibility == 'logged_in') %}
|
||||
<dt>{% trans %}Password{% endtrans %}</dt>
|
||||
<dd>{{ vc_room.data.password }}</dd>
|
||||
{% endif %}
|
||||
{% if event_vc_room.data.show_pin and vc_room.data.room_pin %}
|
||||
<dt>{% trans %}Room PIN{% endtrans %}</dt>
|
||||
<dd>{{ vc_room.data.room_pin }}</dd>
|
||||
{% endif %}
|
||||
{% if event_vc_room.data.show_autojoin %}
|
||||
<dt class="large-row">{% trans %}Zoom URL{% endtrans %}</dt>
|
||||
<dd class="large-row">
|
||||
|
||||
@ -2,5 +2,5 @@
|
||||
{% from 'vc_zoom:buttons.html' import render_join_button %}
|
||||
|
||||
{% block buttons %}
|
||||
{{ render_join_button(vc_room, extra_classes="icon-play") }}
|
||||
{{ render_join_button(vc_room, event_vc_room, extra_classes="icon-play", is_manager=true) }}
|
||||
{% endblock %}
|
||||
|
||||
@ -3,5 +3,5 @@
|
||||
{% set vc_room = event_vc_room.vc_room %}
|
||||
|
||||
{% block buttons %}
|
||||
{{ render_join_button(vc_room, "i-button-small event-service-right-button join-button") }}
|
||||
{{ render_join_button(vc_room, event_vc_room, "i-button-small event-service-right-button join-button") }}
|
||||
{% endblock %}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user