Make the roster backend settable.

This commit is contained in:
Lance Stout 2011-02-02 12:05:34 -05:00
parent de6170a13d
commit 3c871920b1

View file

@ -84,6 +84,17 @@ class Roster(object):
if node not in self._rosters:
self._rosters[node] = RosterNode(self.xmpp, node, self.db)
def set_backend(self, db=None):
"""
Set the datastore interface object for the roster.
Arguments:
db -- The new datastore interface.
"""
self.db = db
for node in self._rosters:
self._rosters[node].set_backend(db)
class RosterNode(object):
@ -148,6 +159,17 @@ class RosterNode(object):
"""Iterate over the roster items."""
return self._jids.__iter__()
def set_backend(self, db=None):
"""
Set the datastore interface object for the roster node.
Arguments:
db -- The new datastore interface.
"""
self.db = db
for jid in self._jids:
self._jids[jid].set_backend(db)
def add(self, jid, name='', groups=None, afrom=False, ato=False,
pending_in=False, pending_out=False, whitelisted=False,
save=False):
@ -393,6 +415,16 @@ class RosterItem(object):
self._db_state = {}
self.load()
def set_backend(self, db=None):
"""
Set the datastore interface object for the roster item.
Arguments:
db -- The new datastore interface.
"""
self.db = db
self.load()
def load(self):
"""
Load the item's state information from an external datastore,