Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2011-06-09 13:06:40 (GMT)
committer Simon Schampijer <simon@schampijer.de>2011-06-09 15:00:39 (GMT)
commit8e5e6c34b015ecab6785f1cc1a3c5ea0019053a7 (patch)
tree5df7b6e92e9254ec9e551302282e37dc22bc925a
parentdf9c0aeb9f064282a566bac7a26240066fe2291f (diff)
Only approve the invitation relevant channels in the shell OLPC #10738
Signed-off-by: Simon Schampijer <simon@laptop.org> Acked-By: Sascha Silbe <silbe@activitycentral.com>
-rw-r--r--src/jarabe/model/telepathyclient.py23
1 files changed, 19 insertions, 4 deletions
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,