本文整理汇总了Python中MaKaC.plugins.Collaboration.Vidyo.api.factory.SOAPObjectFactory类的典型用法代码示例。如果您正苦于以下问题:Python SOAPObjectFactory类的具体用法?Python SOAPObjectFactory怎么用?Python SOAPObjectFactory使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SOAPObjectFactory类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: roomWithSameOwner
def roomWithSameOwner(cls, owner, roomName):
# we retrieve the just created room; we need to do this because Vidyo will have
# added extra data like the room id, the url
searchFilter = SOAPObjectFactory.createFilter('admin', roomName)
answer = AdminApi.getRooms(searchFilter)
createdRooms = answer.room
for room in createdRooms:
if str(room.name) == roomName and str(room.ownerName) == owner:
return room
return None
示例2: searchRooms
def searchRooms(cls, query):
try:
searchFilter = SOAPObjectFactory.createFilter('admin', "%%%s%%" % VidyoTools.replaceSpacesInName(query))
rooms = AdminApi.getRooms(searchFilter)
if rooms.total:
return rooms.room
return []
except WebFault, e:
Logger.get('Vidyo').exception("""Admin API's searchRooms operation got WebFault: %s"""
% e.fault.faultstring)
raise
示例3: attachRoom
def attachRoom(cls, booking):
owner = booking.getOwnerObject()
possibleLogins = VidyoTools.getAvatarLoginList(owner)
if not possibleLogins:
return VidyoError("userHasNoAccounts", "attach")
roomName = booking.getBookingParamByName("roomName")
searchFilter = SOAPObjectFactory.createFilter('admin', roomName)
answer = AdminApi.getRooms(searchFilter, booking.getConference().getId(), booking.getId())
createdRooms = answer.room
for room in createdRooms:
for login in possibleLogins:
if str(room.name) == roomName and str(room.ownerName) == login:
return room
else:
return VidyoError("notValidRoom", "attach")
示例4: attachRoom
def attachRoom(cls, booking):
owner = booking.getOwnerObject()
possibleLogins = VidyoTools.getAvatarLoginList(owner)
if not possibleLogins:
return VidyoError("userHasNoAccounts", "attach")
roomName = booking.getBookingParamByName("roomName")
searchFilter = SOAPObjectFactory.createFilter('admin', roomName)
# TODO: Do several calls if needed
# Vidyo should have an exact match feature too
searchFilter.limit = 100
answer = AdminApi.getRooms(searchFilter)
createdRooms = answer.room
for room in createdRooms:
for login in possibleLogins:
if str(room.name) == roomName and str(room.ownerName) == login:
return room
else:
return VidyoError("notValidRoom", "attach")
示例5: connectRoom
def connectRoom(cls, booking, roomId, extension):
confId = booking.getConference().getId()
bookingId = booking.getId()
try:
searchFilter = SOAPObjectFactory.createFilter('user', extension)
userApiAnswer = UserApi.search(searchFilter, confId, bookingId)
if userApiAnswer.total == 0:
return VidyoError("noExistsRoom", "connect", _("The conference room is not registered in the vidyo service. ") + VidyoTools.getContactSupportText())
legacyMember = userApiAnswer.Entity[0].entityID
AdminApi.connectRoom(roomId, confId, bookingId, legacyMember)
except WebFault, e:
faultString = e.fault.faultstring
if faultString.startswith('ConferenceID is invalid'):
return VidyoError("unknownRoom", "connect")
if faultString.startswith('Failed to Invite to Conference'):
message = _("The connection has failed. ") + VidyoTools.getContactSupportText()
return VidyoError("connectFailed", "connect", message)
else:
Logger.get('Vidyo').exception("""Evt:%s, booking:%s, Admin API's connectRoom operation got WebFault: %s""" %
(confId, bookingId, e.fault.faultstring))
raise
示例6: connectRoom
def connectRoom(cls, booking, roomId, extension):
confId = booking.getConference().getId()
bookingId = booking.getId()
try:
searchFilter = SOAPObjectFactory.createFilter('user', extension)
userApiAnswer = UserApi.search(searchFilter, confId, bookingId)
legacyMember = userApiAnswer.Entity[0].entityID
AdminApi.connectRoom(roomId, confId, bookingId, legacyMember)
except WebFault, e:
faultString = e.fault.faultstring
if faultString.startswith('ConferenceID is invalid'):
return VidyoError("unknownRoom", "connect")
if faultString.startswith('Failed to Invite to Conference'):
message = _("The connection has failed.")
if getVidyoOptionValue("contactSupport"):
message += _("""\nPlease try again or contact %s for help.""")%getVidyoOptionValue("contactSupport")
return VidyoError("connectFailed", "connect", message)
else:
Logger.get('Vidyo').exception("""Evt:%s, booking:%s, Admin API's connectRoom operation got WebFault: %s""" %
(confId, bookingId, e.fault.faultstring))
raise
示例7: createRoom
def createRoom(cls, booking):
""" Attempts to create a public room in Vidyo.
Returns None on success. Will also set booking.setAccountName() if success, with the Indico & Vidyo login used successfully.
Returns a VidyoError instance if there are problems.
:param booking: the CSBooking object inside which we try to create the room
:type booking: MaKaC.plugins.Collaboration.Vidyo.collaboration.CSBooking
"""
# we extract the different parameters
# We set the original conference id because the bookings can belong to more than one conference and being cloned
# and it is used for the long name, we need to keep always the same confId
confId = booking.getConference().getId()
bookingId = booking.getId()
roomName = booking.getBookingParamByName("roomName")
description = booking.getBookingParamByName("roomDescription")
owner = booking.getOwnerObject()
pin = booking.getPin()
moderatorPin = booking.getModeratorPin()
#we obtain the unicode object with the proper format for the room name
roomNameForVidyo = VidyoTools.roomNameForVidyo(roomName)
if isinstance(roomNameForVidyo, VidyoError):
return roomNameForVidyo
#we turn the description into a unicode object
description = VidyoTools.descriptionForVidyo(description)
if isinstance(description, VidyoError):
return description
#we obtain the most probable extension
#TODO: there's a length limit for extensions, check this
baseExtension = getVidyoOptionValue("prefix") + confId
extension = baseExtension
extensionSuffix = 1
#we produce the list of possible account names. We will loop through them to attempt to create the room
possibleLogins = VidyoTools.getAvatarLoginList(owner)
if not possibleLogins:
return VidyoError("userHasNoAccounts", "create")
# We check the moderator PIN is a 3-10 digit number
if moderatorPin and (not moderatorPin.isdigit() or len(moderatorPin) < 3 or len(moderatorPin) > 10):
return VidyoError("PINLength", "create")
roomCreated = False
loginToUse = 0
while not roomCreated and loginToUse < len(possibleLogins):
#we loop changing the ownerName and the extension until room is created
newRoom = SOAPObjectFactory.createRoom(roomNameForVidyo, description, possibleLogins[loginToUse], extension, pin, moderatorPin)
try:
AdminApi.addRoom(newRoom)
roomCreated = True
except WebFault, e:
faultString = e.fault.faultstring
if faultString.startswith('Room exist for name'):
if VidyoOperations.roomWithSameOwner(possibleLogins[loginToUse], roomNameForVidyo):
return VidyoError("duplicatedWithOwner", "create")
else:
return VidyoError("duplicated", "create")
elif faultString.startswith('Member not found for ownerName'):
loginToUse = loginToUse + 1
elif faultString.startswith('PIN should be a 3-10 digit number'):
return VidyoError("PINLength", "create")
elif faultString.startswith('Room exist for extension'):
extension = baseExtension + str(extensionSuffix)
extensionSuffix = extensionSuffix + 1
else:
Logger.get('Vidyo').exception("""Evt:%s, booking:%s, Admin API's addRoom operation got WebFault: %s""" %
(confId, bookingId, e.fault.faultstring))
raise
示例8: modifyRoom
def modifyRoom(cls, booking, oldBookingParams):
# we extract the different parameters
# We set the original conference id because the bookings can belong to more than one conference and being cloned
# and it is used for the long name, we need to keep always the same confId
confId = booking.getConference().getId()
bookingId = booking.getId()
roomId = booking.getRoomId()
roomName = booking.getBookingParamByName("roomName")
description = booking.getBookingParamByName("roomDescription")
newOwner = booking.getOwnerObject() #an avatar object
ownerAccountName = booking.getOwnerAccount() #a str
oldOwner = oldBookingParams["owner"] #an IAvatarFossil fossil
pin = booking.getPin()
moderatorPin = booking.getModeratorPin()
#we obtain the unicode object with the proper format for the room name
roomNameForVidyo = VidyoTools.roomNameForVidyo(roomName)
if isinstance(roomNameForVidyo, VidyoError):
return roomNameForVidyo
#we turn the description into a unicode object
description = VidyoTools.descriptionForVidyo(description)
if isinstance(description, VidyoError):
return description
#(the extension will not change)
#we check if the owner has changed. If not, we reuse the same accountName
useOldAccountName = True
possibleLogins = []
if newOwner.getId() != oldOwner["id"]:
useOldAccountName = False
#we produce the list of possible account names. We will loop through them to attempt to create the room
possibleLogins = VidyoTools.getAvatarLoginList(newOwner)
if not possibleLogins:
raise CollaborationException(_("The moderator has no login information"))
# We check the moderator PIN is a 3-10 digit number
if moderatorPin and (not moderatorPin.isdigit() or len(moderatorPin) < 3 or len(moderatorPin) > 10):
return VidyoError("PINLength", "modify")
roomModified = False
loginToUse = 0
while not roomModified and (useOldAccountName or loginToUse < len(possibleLogins)):
if not useOldAccountName:
ownerAccountName = possibleLogins[loginToUse]
newRoom = SOAPObjectFactory.createRoom(roomNameForVidyo, description, ownerAccountName, booking.getExtension(), pin, moderatorPin)
try:
AdminApi.updateRoom(roomId, newRoom)
roomModified = True
except WebFault, e:
faultString = e.fault.faultstring
if faultString.startswith('Room not exist for roomID'):
return VidyoError("unknownRoom", "modify")
elif faultString.startswith('Room exist for name'):
return VidyoError("duplicated", "modify")
elif faultString.startswith('Member not found for ownerName'):
if useOldAccountName:
#maybe the user was deleted between the time the room was created and now
return VidyoError("badOwner", "modify")
else:
loginToUse = loginToUse + 1
elif faultString.startswith('PIN should be a 3-10 digit number'):
return VidyoError("PINLength", "modify")
else:
Logger.get('Vidyo').exception("""Evt:%s, booking:%s, Admin API's updateRoom operation got WebFault: %s""" %
(confId, bookingId, e.fault.faultstring))
raise
示例9: VidyoError
roomId = booking.getRoomId()
try:
adminApiRoom = AdminApi.getRoom(roomId, confId, bookingId)
except WebFault, e:
faultString = e.fault.faultstring
if faultString.startswith('Room not found for roomID'):
return VidyoError("unknownRoom", "checkStatus")
else:
Logger.get('Vidyo').exception("""Evt:%s, booking:%s, Admin API's getRoom operation got WebFault: %s""" %
(confId, bookingId, e.fault.faultstring))
raise
extension = str(adminApiRoom.extension)
searchFilter = SOAPObjectFactory.createFilter('user', extension)
userApiAnswer = UserApi.search(searchFilter, confId, bookingId)
foundEntities = userApiAnswer.Entity
userApiRoom = None
for entity in foundEntities:
if str(entity.extension) == extension and str(entity.entityID) == roomId:
userApiRoom = entity
return (adminApiRoom, userApiRoom)
@classmethod
def deleteRoom(cls, booking, roomId):
confId = booking.getConference().getId()
bookingId = booking.getId()