# HG changeset patch # User Goffi # Date 1333302511 -7200 # Node ID 5c916b99d0f6840cb0dcfda9c41c0628da6cf8e2 # Parent db4c2b82bab66494521b6b6a7de26551fe135f57 plugin groupblog, D-Bus frontend: added getLastGroupBlogs and getMassiveLastGroupBlogs diff -r db4c2b82bab6 -r 5c916b99d0f6 frontends/src/bridge/DBus.py --- 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) diff -r db4c2b82bab6 -r 5c916b99d0f6 src/bridge/bridge_constructor/dbus_frontend_template.py --- 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) diff -r db4c2b82bab6 -r 5c916b99d0f6 src/plugins/plugin_misc_groupblog.py --- 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")