From 8e5e6c34b015ecab6785f1cc1a3c5ea0019053a7 Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Thu, 09 Jun 2011 13:06:40 +0000 Subject: Only approve the invitation relevant channels in the shell OLPC #10738 Signed-off-by: Simon Schampijer Acked-By: Sascha Silbe --- diff --git a/src/jarabe/model/telepathyclient.py b/src/jarabe/model/telepathyclient.py index c6fbac1..c5a1f9f 100644 --- a/src/jarabe/model/telepathyclient.py +++ b/src/jarabe/model/telepathyclient.py @@ -19,11 +19,15 @@ import logging import dbus from dbus import PROPERTIES_IFACE from telepathy.interfaces import CLIENT, \ + CHANNEL, \ + CHANNEL_TYPE_TEXT, \ CLIENT_APPROVER, \ CLIENT_HANDLER, \ CLIENT_INTERFACE_REQUESTS from telepathy.server import DBusProperties +from telepathy.constants import CONNECTION_HANDLE_TYPE_ROOM + from sugar import dispatch @@ -49,20 +53,31 @@ class TelepathyClient(dbus.service.Object, DBusProperties): 'Interfaces': lambda: list(self._interfaces), }) self._implement_property_get(CLIENT_HANDLER, { - 'HandlerChannelFilter': self.__get_filters_cb, + 'HandlerChannelFilter': self.__get_filters_handler_cb, }) self._implement_property_get(CLIENT_APPROVER, { - 'ApproverChannelFilter': self.__get_filters_cb, + 'ApproverChannelFilter': self.__get_filters_approver_cb, }) self.got_channel = dispatch.Signal() self.got_dispatch_operation = dispatch.Signal() - def __get_filters_cb(self): - logging.debug('__get_filters_cb') + def __get_filters_handler_cb(self): filter_dict = dbus.Dictionary({}, signature='sv') return dbus.Array([filter_dict], signature='a{sv}') + def __get_filters_approver_cb(self): + filt = { + CHANNEL + '.ChannelType': CHANNEL_TYPE_TEXT, + CHANNEL + '.TargetHandleType': CONNECTION_HANDLE_TYPE_ROOM, + } + filter_dict = dbus.Dictionary(filt, signature='sv') + filters = dbus.Array([filter_dict], signature='a{sv}') + + logging.debug('__get_filters_approver_cb %r', filters) + + return filters + @dbus.service.method(dbus_interface=CLIENT_HANDLER, in_signature='ooa(oa{sv})aota{sv}', out_signature='') def HandleChannels(self, account, connection, channels, requests_satisfied, -- cgit v0.9.1