From 004eabf80959ebcaeddf2e15065bd4f50ad10974 Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Wed, 17 Aug 2011 21:30:47 -0700 Subject: Update plugins that use Iq stanzas to work with new exceptions. --- sleekxmpp/roster/single.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'sleekxmpp/roster') diff --git a/sleekxmpp/roster/single.py b/sleekxmpp/roster/single.py index deb1ac8b..411c5d98 100644 --- a/sleekxmpp/roster/single.py +++ b/sleekxmpp/roster/single.py @@ -204,10 +204,8 @@ class RosterNode(object): iq['roster']['items'] = {jid: {'name': name, 'subscription': subscription, 'groups': groups}} - response = iq.send(block, timeout, callback) - if response in [False, None] or isinstance(response, Iq): - return response - return response and response['type'] == 'result' + + return iq.send(block, timeout, callback) def presence(self, jid, resource=None): """ -- cgit v1.2.3 From 3fc20e10f5ae009273cd2d751628b0dfc05f9e8d Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Thu, 18 Aug 2011 00:07:37 -0700 Subject: Add some convenience methods to rosters. Can now use len(self.client_roster) to get the number of JIDs in the roster, and self.client_roster.groups() to get a dict of groups and the JIDs in those groups. --- sleekxmpp/roster/single.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'sleekxmpp/roster') diff --git a/sleekxmpp/roster/single.py b/sleekxmpp/roster/single.py index 411c5d98..c2a73d34 100644 --- a/sleekxmpp/roster/single.py +++ b/sleekxmpp/roster/single.py @@ -75,6 +75,10 @@ class RosterNode(object): self.add(key, save=True) return self._jids[key] + def __len__(self): + """Return the number of JIDs referenced by the roster.""" + return len(self._jids) + def keys(self): """Return a list of all subscribed JIDs.""" return self._jids.keys() @@ -83,6 +87,16 @@ class RosterNode(object): """Returns whether the roster has a JID.""" return jid in self._jids + def groups(self): + """Return a dictionary mapping group names to JIDs.""" + result = {} + for jid in self._jids: + for group in self._jids[jid]['groups']: + if group not in result: + result[group] = [] + result[group].append(jid) + return result + def __iter__(self): """Iterate over the roster items.""" return self._jids.__iter__() -- cgit v1.2.3