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.
This commit is contained in:
@@ -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):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user