示例#1
0
 def setOidResquestState( self, mess, state):
     jid = JID(mess.getFrom())
     n_id = jid.getStripped()
     try:
         oidrequest = OidRequest.objects.filter(identity__userprofile__notification_id=n_id, identity__userprofile__notification_type=UserProfile.JABBER_NOTIFICATION_TYPE, identity__userprofile__notification_state=UserProfile.VALID_NOTIFICATION_STATE).latest('date_created')
         oidrequest.validation = state
         oidrequest.save()
         return 'OK'
     except OidRequest.DoesNotExist:
         return 'Error: couldn\'t find any OpenID request pending!'
示例#2
0
class Muc(object):

	def __init__(self, client, name, nick):
		self.client = client
		self.name = name
		self.nick = nick

		self.roomId = "%s/%s" % (name, nick)
		self.jid = JID(self.roomId)
		self.mucId = self.jid.getStripped()
		self.roster = {}

	def getId(self):
		return self.mucId

	def getUser(self, nick):
		if nick not in self.roster:
			return None
		return self.roster[nick]

	def getNick(self):
		return self.nick

	def sendPresence(self, password):
		presence = xmpp.Presence(to=self.roomId)
		x = presence.setTag('x', namespace=xmpp.NS_MUC)
		x.setTagData('password', password)
		x.addChild('history', {'maxchars': '0', 'maxstanzas': '0'});
		self.client.client.send(presence)

	def sendMessage(self, body):
		message = xmpp.protocol.Message(to=self.mucId, body=body, typ='groupchat')
		self.client.client.send(message)

	def setRole(self, user, role, reason=None):
		iqMap = {'role': role}
		if reason is not None:
			iqMap['reason'] = reason
		self.client.client.send(user.iq(iqMap))

	def setAffiliation(self, user, affiliation):
		self.client.client.send(user.iq({'affiliation': affiliation}))

	def onRoster(self, presence):
		nick = presence.getFrom().getResource()

		if presence.getType() == 'unavailable':
			if nick not in self.roster:
				return

			user = self.roster[nick]

			# This unpleasantness checks for and handles nickname changes:
			x = presence.getTag(presence, {}, NS_MUC_USER)
			if x is None:
				return
			item = x.getTag('item')
			status = x.getTag('status')

			if status and status.getAttr('code') == '303':
				newNick = item.getAttr('nick')
				if newNick == nick:
					return

				# nick -> newNick
				user.updateNick(newNick)
				del self.roster[nick]
				self.roster[newNick] = user
				if nick == self.nick:
					self.nick = nick
				self.client.emitMucNickChange(self, user, nick)
			else:
				# Seems like this user was deleted.
				self.client.emitMucPart(self, self.roster[nick])
				del self.roster[nick]
		else:
			if nick in self.roster:
				user = self.roster[nick]
				user.updateFromPresence(nick, presence)
			else:
				self.roster[nick] = self.userFromPresence(nick, presence)
				self.client.emitMucJoin(self, self.roster[nick])
			pass

	def userFromPresence(self, nick, presence):
		return User(self, nick).updateFromPresence(nick, presence)