changeset 470:5c916b99d0f6

plugin groupblog, D-Bus frontend: added getLastGroupBlogs and getMassiveLastGroupBlogs
author Goffi <goffi@goffi.org>
date Sun, 01 Apr 2012 19:48:31 +0200
parents db4c2b82bab6
children 6cd04adddaea
files frontends/src/bridge/DBus.py src/bridge/bridge_constructor/dbus_frontend_template.py src/plugins/plugin_misc_groupblog.py
diffstat 3 files changed, 19 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/frontends/src/bridge/DBus.py	Sun Apr 01 19:45:35 2012 +0200
+++ b/frontends/src/bridge/DBus.py	Sun Apr 01 19:48:31 2012 +0200
@@ -170,8 +170,8 @@
     def getRoomsJoined(self, profile_key):
         return self.db_plugin_iface.getRoomsJoined(profile_key)
 
-    def getRoomsSubjectss(self, profile_key):
-        return self.db_plugin_iface.getRoomsSubjectss(profile_key)
+    def getRoomsSubjects(self, profile_key):
+        return self.db_plugin_iface.getRoomsSubjects(profile_key)
 
     def joinMUC(self, room_jid, nick, options, profile_key):
         if options == None:
@@ -243,12 +243,15 @@
     def getLastMicroblogs(self, jid, max_items, profile_key, callback=None, errback=None):
         return self.db_plugin_iface.getLastMicroblogs(jid, max_items, profile_key, reply_handler=callback, error_handler=errback)
 
-    def getMblogNodes(self, profile_key, callback=None, errback=None):
-        return self.db_plugin_iface.getMblogNodes(profile_key, reply_handler=callback, error_handler=errback)
-    
     def sendGroupBlog(self, groups, message, profile_key):
         return self.db_plugin_iface.sendGroupBlog(groups, message, profile_key)
     
+    def getLastGroupBlogs(self, jid, max_items, profile_key, callback=None, errback=None):
+        return self.db_plugin_iface.getLastGroupBlogs(jid, max_items, profile_key, reply_handler=callback, error_handler=errback)
+    
+    def getMassiveLastGroupBlogs(self, publishers_type, publishers, max_items=10, profile_key='@DEFAULT@', callback=None, errback=None):
+        return self.db_plugin_iface.getMassiveLastGroupBlogs(publishers_type, publishers, max_items, profile_key, reply_handler=callback, error_handler=errback)
+    
     def sendPersonalEvent(self, event_type, data, profile_key):
         return self.db_plugin_iface.sendPersonalEvent(event_type, data, profile_key)
     
--- a/src/bridge/bridge_constructor/dbus_frontend_template.py	Sun Apr 01 19:45:35 2012 +0200
+++ b/src/bridge/bridge_constructor/dbus_frontend_template.py	Sun Apr 01 19:48:31 2012 +0200
@@ -142,6 +142,9 @@
     def getLastGroupBlogs(self, jid, max_items, profile_key, callback=None, errback=None):
         return self.db_plugin_iface.getLastGroupBlogs(jid, max_items, profile_key, reply_handler=callback, error_handler=errback)
     
+    def getMassiveLastGroupBlogs(self, publishers_type, publishers, max_items=10, profile_key='@DEFAULT@', callback=None, errback=None):
+        return self.db_plugin_iface.getMassiveLastGroupBlogs(publishers_type, publishers, max_items, profile_key, reply_handler=callback, error_handler=errback)
+    
     def sendPersonalEvent(self, event_type, data, profile_key):
         return self.db_plugin_iface.sendPersonalEvent(event_type, data, profile_key)
     
--- a/src/plugins/plugin_misc_groupblog.py	Sun Apr 01 19:45:35 2012 +0200
+++ b/src/plugins/plugin_misc_groupblog.py	Sun Apr 01 19:48:31 2012 +0200
@@ -167,7 +167,7 @@
 
 
         
-    def getLastGroupBlogs(self, pub_jid, max_items=10, profile_key='@DEFAULT@', callback=None, errback=None):
+    def getLastGroupBlogs(self, pub_jid, max_items=10, profile_key='@DEFAULT@'):
         """Get the last published microblogs
         @param pub_jid: jid of the publisher
         @param max_items: how many microblogs we want to get
@@ -180,20 +180,17 @@
             profile, client = result
             d = self.host.plugins["XEP-0060"].getItems(client.item_access_pubsub, jid.JID(pub_jid).userhost(),
                                                        max_items=max_items, profile_key=profile_key)
-            d.addCallbacks(lambda items: callback(map(self.host.plugins["XEP-0277"].item2mbdata, items)), errback)
+            d.addCallback(lambda items: map(self.host.plugins["XEP-0277"].item2mbdata, items))
 
-        assert(callback)
         self.initialise(profile_key).addCallback(initialised)
         #TODO: we need to use the server corresponding the the host of the jid
 
-    def getMassiveLastGroupBlogs(self, publishers_type, publishers, max_items=10, profile_key='@DEFAULT@', callback=None, errback=None):
+    def getMassiveLastGroupBlogs(self, publishers_type, publishers, max_items=10, profile_key='@DEFAULT@'):
         """Get the last published microblogs for a list of groups or jids
         @param publishers_type: type of the list of publishers (one of "GROUP" or "JID" or "ALL")
         @param publishers: list of publishers, according to "publishers_type" (list of groups or list of jids)
         @param max_items: how many microblogs we want to get
         @param profile_key: profile key
-        @param callback: used for the async answer
-        @param errback: used for the async answer
         """
         def sendResult(result):
             """send result of DeferredList (list of microblogs to the calling method"""
@@ -205,31 +202,27 @@
                     source_jid, data = value
                     ret[source_jid] = data
             
-            callback(ret)
+            return ret
 
         def initialised(result):
             profile, client = result
 
             if publishers_type == "ALL":
                 contacts = client.roster.getItems()
-                print "contacts:", contacts
                 jids = [contact.jid.userhost() for contact in contacts]
-                print "jids:", jids
                 mblogs = []
                 for _jid in jids:
                     d = self.host.plugins["XEP-0060"].getItems(client.item_access_pubsub, jid.JID(_jid).userhost(),
                                                                max_items=max_items, profile_key=profile_key)
-                    #TODO: check empty result (nothing published so far) 
                     d.addCallback(lambda items, source_jid: (source_jid, map(self.host.plugins["XEP-0277"].item2mbdata, items)), _jid)
                     mblogs.append(d)
                 dlist = defer.DeferredList(mblogs)
-                dlist.addCallback(sendResult) 
+                dlist.addCallback(sendResult)
+                return dlist
 
-            #d = self.host.plugins["XEP-0060"].getItems(client.item_access_pubsub, jid.JID(pub_jid).userhost(),
-            #                                           max_items=max_items, profile_key=profile_key)
-            #d.addCallbacks(lambda items: callback(map(self.host.plugins["XEP-0277"].item2mbdata, items)), errback)
+            return defer.fail("Unknown type")
 
-        assert(callback)
+
         #TODO: custom exception
         if publishers_type not in ["GROUP", "JID", "ALL"]:
             raise Exception("Bad call, unknown publishers_type")