VC/Vidyo: Move retrieve_principals from core

This commit is contained in:
Adrian Moennich 2017-09-20 14:40:56 +02:00
parent 6eee13b111
commit 4d76f2fd5e
3 changed files with 14 additions and 7 deletions

View File

@ -21,13 +21,12 @@ from wtforms.fields.simple import TextAreaField
from wtforms.validators import DataRequired, Length, Optional, Regexp, ValidationError
from indico.modules.vc.forms import VCRoomAttachFormBase, VCRoomFormBase
from indico.util.user import retrieve_principal
from indico.web.forms.base import generated_data
from indico.web.forms.fields import IndicoPasswordField, PrincipalField
from indico.web.forms.widgets import SwitchWidget
from indico_vc_vidyo import _
from indico_vc_vidyo.util import iter_user_identities
from indico_vc_vidyo.util import iter_user_identities, retrieve_principal
PIN_VALIDATORS = [Optional(), Length(min=3, max=10), Regexp(r'^\d+$', message=_("The PIN must be a number"))]
@ -71,7 +70,7 @@ class VCRoomForm(VCRoomFormBase, VidyoAdvancedFormMixin):
def __init__(self, *args, **kwargs):
defaults = kwargs['obj']
if defaults.owner_user is None and defaults.owner is not None:
defaults.owner_user = retrieve_principal(defaults.owner, allow_groups=False, legacy=False)
defaults.owner_user = retrieve_principal(defaults.owner)
super(VCRoomForm, self).__init__(*args, **kwargs)
@generated_data

View File

@ -31,7 +31,6 @@ from indico.modules.events.views import WPSimpleEventDisplay
from indico.modules.vc import VCPluginMixin, VCPluginSettingsFormBase
from indico.modules.vc.exceptions import VCRoomError, VCRoomNotFoundError
from indico.modules.vc.views import WPVCEventPage, WPVCManageEvent
from indico.util.user import retrieve_principal
from indico.web.forms.fields import IndicoPasswordField
from indico.web.forms.widgets import CKEditorWidget
from indico.web.http_api.hooks.base import HTTPAPIHook
@ -43,7 +42,7 @@ from indico_vc_vidyo.cli import cli
from indico_vc_vidyo.forms import VCRoomAttachForm, VCRoomForm
from indico_vc_vidyo.http_api import DeleteVCRoomAPI
from indico_vc_vidyo.models.vidyo_extensions import VidyoExtension
from indico_vc_vidyo.util import iter_extensions, iter_user_identities, update_room_from_obj
from indico_vc_vidyo.util import iter_extensions, iter_user_identities, retrieve_principal, update_room_from_obj
class PluginSettingsForm(VCPluginSettingsFormBase):
@ -156,7 +155,7 @@ class VidyoPlugin(VCPluginMixin, IndicoPlugin):
:param event: Event -- The event to the Vidyo room will be attached
"""
client = AdminClient(self.settings)
owner = retrieve_principal(vc_room.data['owner'], allow_groups=False, legacy=False)
owner = retrieve_principal(vc_room.data['owner'])
login_gen = iter_user_identities(owner)
login = next(login_gen, None)
if login is None:
@ -232,7 +231,7 @@ class VidyoPlugin(VCPluginMixin, IndicoPlugin):
except RoomNotFoundAPIException:
raise VCRoomNotFoundError(_("This room has been deleted from Vidyo"))
owner = retrieve_principal(vc_room.data['owner'], allow_groups=False, legacy=False)
owner = retrieve_principal(vc_room.data['owner'])
changed_owner = room_obj.ownerName not in iter_user_identities(owner)
if changed_owner:
login_gen = iter_user_identities(owner)

View File

@ -93,3 +93,12 @@ def update_room_from_obj(settings, vc_room, room_obj):
'moderation_pin': room_obj.RoomMode.moderatorPIN if room_obj.RoomMode.hasModeratorPIN else "",
})
vc_room.vidyo_extension.extension = int(room_obj.extension)
def retrieve_principal(principal):
from indico.modules.users import User
type_, id_ = principal
if type_ in {'Avatar', 'User'}:
return User.get(int(id_))
else:
raise ValueError('Unexpected type: {}'.format(type_))