[conduit/syncml: 25/244] Boilerplate for syncing calendar items



commit a13e6e8be7297eabf739445924114f3c29402099
Author: John Carr <john carr unrouted co uk>
Date:   Wed Apr 15 04:45:57 2009 -0700

    Boilerplate for syncing calendar items
---
 conduit/modules/SyncmlModule/SyncmlModule.py |   34 +++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/conduit/modules/SyncmlModule/SyncmlModule.py b/conduit/modules/SyncmlModule/SyncmlModule.py
index 50af349..dc40d24 100644
--- a/conduit/modules/SyncmlModule/SyncmlModule.py
+++ b/conduit/modules/SyncmlModule/SyncmlModule.py
@@ -37,7 +37,8 @@ class BluetoothSyncmlFactory(BluetoothFactory.BluetoothFactory):
 
     def get_dataproviders(self, id, **props):
         return [
-            ContactsProvider
+            BluetoothContactsProvider,
+            BluetoothEventsProvider
         ]
 
 
@@ -243,12 +244,43 @@ class ContactsProvider(SyncmlDataProvider):
         return obj.get_vcard_string()
 
 
+class EventsProvider(SyncmlDataProvider):
+
+    _name_ = "Calendar"
+    _description_ = "Calendar"
+    _module_type_ = "twoway"
+    _in_type_ = "event"
+    _out_type_ = "event"
+    _icon_ = "x-office-calendar"
+    _configurable_ = False
+
+    def _setup_datastore(self):
+        err = pysyncml.Error()
+        self.syncobj.add_datastore("text/x-vcalendar", None, "Calendar", pysyncml.byref(err))
+
+    def _blob_to_obj(self, uid, data):
+        e = Event.Event()
+        e.set_UID(uid)
+        e.set_from_ical_string(data)
+        return e
+
+    def _obj_to_blob(self, obj):
+        return obj.get_ical_string()
+
+
 #FIXME: Need a nicer design here!
 class BluetoothContactsProvider(BluetoothClient, ContactsProvider):
     pass
+class BluetoothEventsProvider(BluetoothClient, EventsProvider):
+    pass
 
 class SyncmlContactTwoWay(HttpClientProvider, ContactsProvider):
 
     def __init__(self, *args):
         SyncmlDataProvider.__init__(self, "http://localhost:1234";)
 
+class SyncmlEventsTwoWay(HttpClientProvider, EventsProvider):
+
+    def __init__(self, *args):
+        SyncmlDataProvider.__init__(self, "http://localhost:1234";)
+



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]