diff options
author | Simon 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) |
commit | b33dd7cfabf6b5e002ecd33b2a188349252ea87b (patch) | |
tree | 1c1422cfa6d33a2f4c7e9bb8b4ab5bf9e2e1a0f8 /sugar/presence/presenceservice.py | |
parent | b96de811d33e38106cad0e58172de5dcbc54453b (diff) |
sugar.presence.presenceservice: Add get_buddy_by_telepathy_handle()
Diffstat (limited to 'sugar/presence/presenceservice.py')
-rw-r--r-- | sugar/presence/presenceservice.py | 26 |
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: |