Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/presence
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2007-05-18 14:24:58 (GMT)
committer Simon McVittie <simon.mcvittie@collabora.co.uk>2007-05-24 18:04:35 (GMT)
commitb33dd7cfabf6b5e002ecd33b2a188349252ea87b (patch)
tree1c1422cfa6d33a2f4c7e9bb8b4ab5bf9e2e1a0f8 /sugar/presence
parentb96de811d33e38106cad0e58172de5dcbc54453b (diff)
sugar.presence.presenceservice: Add get_buddy_by_telepathy_handle()
Diffstat (limited to 'sugar/presence')
-rw-r--r--sugar/presence/presenceservice.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/sugar/presence/presenceservice.py b/sugar/presence/presenceservice.py
index 4e33272..a0b60ee 100644
--- a/sugar/presence/presenceservice.py
+++ b/sugar/presence/presenceservice.py
@@ -312,6 +312,32 @@ class PresenceService(gobject.GObject):
return None
return self._new_object(buddy_op)
+ def get_buddy_by_telepathy_handle(self, tp_conn_name, tp_conn_path,
+ handle):
+ """Retrieve single Buddy object for the given public key
+
+ :Parameters:
+ `tp_conn_name` : str
+ The well-known bus name of a Telepathy connection
+ `tp_conn_path` : dbus.ObjectPath
+ The object path of the Telepathy connection
+ `handle` : int or long
+ The handle of a Telepathy contact on that connection,
+ of type HANDLE_TYPE_CONTACT. This may not be a
+ channel-specific handle.
+ :Returns: the Buddy object, or None if the buddy is not found
+ """
+ try:
+ buddy_op = self._ps.GetBuddyByTelepathyHandle(tp_conn_name,
+ tp_conn_path,
+ handle)
+ except dbus.exceptions.DBusException, err:
+ _logger.warn('Unable to retrieve buddy handle for handle %u at '
+ 'conn %s:%s from presence service: %s',
+ handle, tp_conn_name, tp_conn_path, err)
+ return None
+ return self._new_object(buddy_op)
+
def get_owner(self):
"""Retrieves the laptop "owner" Buddy object."""
try: