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!'
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)