diff options
author | Lance Stout <lancestout@gmail.com> | 2012-03-07 11:44:07 -0800 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2012-03-07 14:55:27 -0800 |
commit | a71823dc040062c02a2036db7473845ca07b52f3 (patch) | |
tree | c3e97566ec63cd936203684321e1cce1df73fb74 /sleekxmpp/stanza/roster.py | |
parent | d41ada6b66e4fb1b447c2f6aa4f0e227429afbbf (diff) | |
download | slixmpp-a71823dc040062c02a2036db7473845ca07b52f3.tar.gz slixmpp-a71823dc040062c02a2036db7473845ca07b52f3.tar.bz2 slixmpp-a71823dc040062c02a2036db7473845ca07b52f3.tar.xz slixmpp-a71823dc040062c02a2036db7473845ca07b52f3.zip |
Add support for roster versioning.
This was XEP-0237, but is now part of RFC 6121.
Roster backends should now expose two additional methods:
version(jid):
Return the version of the given JID's roster.
set_version(jid, version):
Update the version of the given JID's roster.
A new state field will be passed to the backend if an item
has been marked for removal. This is 'removed' which will
be set to True.
Diffstat (limited to 'sleekxmpp/stanza/roster.py')
-rw-r--r-- | sleekxmpp/stanza/roster.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/sleekxmpp/stanza/roster.py b/sleekxmpp/stanza/roster.py index 0b34d03b..4788ba72 100644 --- a/sleekxmpp/stanza/roster.py +++ b/sleekxmpp/stanza/roster.py @@ -36,7 +36,30 @@ class Roster(ElementBase): namespace = 'jabber:iq:roster' name = 'query' plugin_attrib = 'roster' - interfaces = set(('items',)) + interfaces = set(('items', 'ver')) + + def get_ver(self): + """ + Ensure handling an empty ver attribute propery. + + The ver attribute is special in that the presence of the + attribute with an empty value is important for boostrapping + roster versioning. + """ + return self.xml.attrib.get('ver', None) + + def set_ver(self, ver): + """ + Ensure handling an empty ver attribute propery. + + The ver attribute is special in that the presence of the + attribute with an empty value is important for boostrapping + roster versioning. + """ + if ver is not None: + self.xml.attrib['ver'] = ver + else: + del self.xml.attrib['ver'] def set_items(self, items): """ |