[Telepathy-commits] [telepathy-python/master] Make DBusProperties initialisable without removing all previous interface property implementations.

Jonny Lamb jonny.lamb at collabora.co.uk
Mon Jan 5 15:00:52 PST 2009


Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
---
 src/server/properties.py |   25 +++++++++++++------------
 1 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/server/properties.py b/src/server/properties.py
index 42d46dc..b145bad 100644
--- a/src/server/properties.py
+++ b/src/server/properties.py
@@ -30,36 +30,37 @@ class DBusProperties(dbus.service.Interface):
     def __init__(self):
         self._interfaces.add(dbus.PROPERTIES_IFACE)
 
-        self.__getters = {}
-        self.__setters = {}
+        if not getattr(self, '_prop_getters', None):
+            self._prop_getters = {}
+            self._prop_setters = {}
 
     def _implement_property_get(self, iface, dict):
-        self.__getters.setdefault(iface, {}).update(dict)
+        self._prop_getters.setdefault(iface, {}).update(dict)
 
     def _implement_property_set(self, iface, dict):
-        self.__setters.setdefault(iface, {}).update(dict)
+        self._prop_setters.setdefault(iface, {}).update(dict)
 
     @dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='ss', out_signature='v')
     def Get(self, interface_name, property_name):
-        if interface_name in self.__getters \
-            and property_name in self.__getters[interface_name]:
-                return self.__getters[interface_name][property_name]()
+        if interface_name in self._prop_getters \
+            and property_name in self._prop_getters[interface_name]:
+                return self._prop_getters[interface_name][property_name]()
         else:
             raise telepathy.errors.InvalidArgument()
 
     @dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='ssv', out_signature='')
     def Set(self, interface_name, property_name, value):
-        if interface_name in self.__setters \
-            and property_name in self.__setters[interface_name]:
-                return self.__setters[interface_name][property_name](value)
+        if interface_name in self._prop_setters \
+            and property_name in self._prop_setters[interface_name]:
+                return self._prop_setters[interface_name][property_name](value)
         else:
             raise telepathy.errors.PermissionDenied()
 
     @dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='s', out_signature='a{sv}')
     def GetAll(self, interface_name):
-        if interface_name in self.__getters:
+        if interface_name in self._prop_getters:
             r = {}
-            for k, v in self.__getters[interface_name].items():
+            for k, v in self._prop_getters[interface_name].items():
                 r[k] = v()
             return r
         else:
-- 
1.5.6.5




More information about the Telepathy-commits mailing list