summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2012-07-24 16:48:24 -0700
committerLance Stout <lancestout@gmail.com>2012-07-24 16:48:24 -0700
commit70883086b7b5c290f220357ba920db504b926008 (patch)
tree982850ef79fbca3e7db625821f4b8e0ff5ec1434
parent9a08dfc7d4320638256a58daf6e02a433f1ee91c (diff)
downloadslixmpp-70883086b7b5c290f220357ba920db504b926008.tar.gz
slixmpp-70883086b7b5c290f220357ba920db504b926008.tar.bz2
slixmpp-70883086b7b5c290f220357ba920db504b926008.tar.xz
slixmpp-70883086b7b5c290f220357ba920db504b926008.zip
Modify update_roster() to only change the information provided.
Before: Not specifying the groups, name, etc would remove them from the roster entry. After: Any parameters not specified are populated with the current roster entry's values.
-rw-r--r--sleekxmpp/clientxmpp.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/sleekxmpp/clientxmpp.py b/sleekxmpp/clientxmpp.py
index 48637dad..e3b434e9 100644
--- a/sleekxmpp/clientxmpp.py
+++ b/sleekxmpp/clientxmpp.py
@@ -179,8 +179,7 @@ class ClientXMPP(BaseXMPP):
self._stream_feature_order.remove((order, name))
self._stream_feature_order.sort()
- def update_roster(self, jid, name=None, subscription=None, groups=[],
- block=True, timeout=None, callback=None):
+ def update_roster(self, jid, **kwargs):
"""Add or change a roster item.
:param jid: The JID of the entry to modify.
@@ -201,6 +200,16 @@ class ClientXMPP(BaseXMPP):
Will be executed when the roster is received.
Implies ``block=False``.
"""
+ current = self.client_roster[jid]
+
+ name = kwargs.get('name', current['name'])
+ subscription = kwargs.get('subscription', current['subscription'])
+ groups = kwargs.get('groups', current['groups'])
+
+ block = kwargs.get('block', True)
+ timeout = kwargs.get('timeout', None)
+ callback = kwargs.get('callback', None)
+
return self.client_roster.update(jid, name, subscription, groups,
block, timeout, callback)