Propagate save option when setting a roster backend.
This commit is contained in:
		@@ -95,19 +95,21 @@ class Roster(object):
 | 
				
			|||||||
        if node not in self._rosters:
 | 
					        if node not in self._rosters:
 | 
				
			||||||
            self._rosters[node] = RosterNode(self.xmpp, node, self.db)
 | 
					            self._rosters[node] = RosterNode(self.xmpp, node, self.db)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def set_backend(self, db=None):
 | 
					    def set_backend(self, db=None, save=True):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        Set the datastore interface object for the roster.
 | 
					        Set the datastore interface object for the roster.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Arguments:
 | 
					        Arguments:
 | 
				
			||||||
            db -- The new datastore interface.
 | 
					            db -- The new datastore interface.
 | 
				
			||||||
 | 
					            save -- If True, save the existing state to the new
 | 
				
			||||||
 | 
					                    backend datastore. Defaults to True.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        self.db = db
 | 
					        self.db = db
 | 
				
			||||||
        existing_entries = set(self._rosters)
 | 
					        existing_entries = set(self._rosters)
 | 
				
			||||||
        new_entries = set(self.db.entries(None, {}))
 | 
					        new_entries = set(self.db.entries(None, {}))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for node in existing_entries:
 | 
					        for node in existing_entries:
 | 
				
			||||||
            self._rosters[node].set_backend(db)
 | 
					            self._rosters[node].set_backend(db, save)
 | 
				
			||||||
        for node in new_entries - existing_entries:
 | 
					        for node in new_entries - existing_entries:
 | 
				
			||||||
            self.add(node)
 | 
					            self.add(node)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -101,19 +101,21 @@ class RosterNode(object):
 | 
				
			|||||||
        """Iterate over the roster items."""
 | 
					        """Iterate over the roster items."""
 | 
				
			||||||
        return self._jids.__iter__()
 | 
					        return self._jids.__iter__()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def set_backend(self, db=None):
 | 
					    def set_backend(self, db=None, save=True):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        Set the datastore interface object for the roster node.
 | 
					        Set the datastore interface object for the roster node.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Arguments:
 | 
					        Arguments:
 | 
				
			||||||
            db -- The new datastore interface.
 | 
					            db -- The new datastore interface.
 | 
				
			||||||
 | 
					            save -- If True, save the existing state to the new
 | 
				
			||||||
 | 
					                    backend datastore. Defaults to True.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        self.db = db
 | 
					        self.db = db
 | 
				
			||||||
        existing_entries = set(self._jids)
 | 
					        existing_entries = set(self._jids)
 | 
				
			||||||
        new_entries = set(self.db.entries(self.jid, {}))
 | 
					        new_entries = set(self.db.entries(self.jid, {}))
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        for jid in existing_entries:
 | 
					        for jid in existing_entries:
 | 
				
			||||||
            self._jids[jid].set_backend(db)
 | 
					            self._jids[jid].set_backend(db, save)
 | 
				
			||||||
        for jid in new_entries - existing_entries:
 | 
					        for jid in new_entries - existing_entries:
 | 
				
			||||||
            self.add(jid)
 | 
					            self.add(jid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user