summaryrefslogtreecommitdiff
path: root/src/roster.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/roster.py')
-rw-r--r--src/roster.py24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/roster.py b/src/roster.py
index d6fed94f..5a068909 100644
--- a/src/roster.py
+++ b/src/roster.py
@@ -69,24 +69,30 @@ class Roster(object):
"""Set the a Contact value for the bare jid key"""
self.contacts[key] = value
+ def remove(self, jid):
+ """Send a removal iq to the server"""
+ jid = safeJID(jid).bare
+ if self.__node[jid]:
+ try:
+ self.__node[jid].send_presence(ptype='unavailable')
+ self.__node.remove(jid)
+ except (IqError, IqTimeout):
+ import traceback
+ log.debug('IqError when removing %s:\n%s', jid, traceback.format_exc())
+
def __delitem__(self, jid):
- """Remove a contact from the roster"""
+ """Remove a contact from the roster view"""
jid = safeJID(jid).bare
contact = self[jid]
if not contact:
return
+ del self.contacts[contact.bare_jid]
+
for group in list(self.groups.values()):
group.remove(contact)
if not group:
del self.groups[group.name]
- del self.contacts[contact.bare_jid]
- if jid in self.jids():
- try:
- self.__node[jid].send_presence(ptype='unavailable')
- self.__node.remove(jid)
- except (IqError, IqTimeout):
- import traceback
- log.debug('IqError when removing %s:\n%s', jid, traceback.format_exc())
+ self.modified()
def __iter__(self):
"""Iterate over the jids of the contacts"""