Mercurial > libervia-backend
diff src/plugins/plugin_misc_groupblog.py @ 594:e629371a28d3
Fix pep8 support in src/plugins.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Fri, 18 Jan 2013 17:55:35 +0100 |
parents | beaf6bec2fcd |
children | 84a6e83157c2 |
line wrap: on
line diff
--- a/src/plugins/plugin_misc_groupblog.py Mon Jan 21 00:59:50 2013 +0100 +++ b/src/plugins/plugin_misc_groupblog.py Fri Jan 18 17:55:35 2013 +0100 @@ -36,7 +36,7 @@ NS_GROUPBLOG = 'http://goffi.org/protocol/groupblog' NS_NODE_PREFIX = 'urn:xmpp:groupblog:' #NS_PUBSUB_EXP = 'http://goffi.org/protocol/pubsub' #for non official features -NS_PUBSUB_EXP = NS_PUBSUB #XXX: we can't use custom namespace as Wokkel's PubSubService use official NS +NS_PUBSUB_EXP = NS_PUBSUB # XXX: we can't use custom namespace as Wokkel's PubSubService use official NS NS_PUBSUB_ITEM_ACCESS = NS_PUBSUB_EXP + "#item-access" NS_PUBSUB_CREATOR_JID_CHECK = NS_PUBSUB_EXP + "#creator-jid-check" NS_PUBSUB_ITEM_CONFIG = NS_PUBSUB_EXP + "#item-config" @@ -51,28 +51,33 @@ TYPE_COLLECTION = 'collection' PLUGIN_INFO = { -"name": "Group blogging throught collections", -"import_name": "groupblog", -"type": "MISC", -"protocols": [], -"dependencies": ["XEP-0277"], -"main": "GroupBlog", -"handler": "yes", -"description": _("""Implementation of microblogging with roster access""") + "name": "Group blogging throught collections", + "import_name": "groupblog", + "type": "MISC", + "protocols": [], + "dependencies": ["XEP-0277"], + "main": "GroupBlog", + "handler": "yes", + "description": _("""Implementation of microblogging with roster access""") } + class NoCompatiblePubSubServerFound(Exception): pass + class BadAccessTypeError(Exception): pass + class BadAccessListError(Exception): pass + class UnknownType(Exception): pass + class GroupBlog(object): """This class use a SàT PubSub Service to manage access on microblog""" @@ -81,29 +86,28 @@ self.host = host host.bridge.addMethod("sendGroupBlog", ".plugin", in_sign='sasss', out_sign='', - method=self.sendGroupBlog) + method=self.sendGroupBlog) host.bridge.addMethod("getLastGroupBlogs", ".plugin", in_sign='sis', out_sign='aa{ss}', method=self.getLastGroupBlogs, - async = True) + async=True) host.bridge.addMethod("getMassiveLastGroupBlogs", ".plugin", in_sign='sasis', out_sign='a{saa{ss}}', method=self.getMassiveLastGroupBlogs, - async = True) + async=True) host.bridge.addMethod("subscribeGroupBlog", ".plugin", in_sign='ss', out_sign='', - method=self.subscribeGroupBlog, - async = True) + method=self.subscribeGroupBlog, + async=True) host.bridge.addMethod("massiveSubscribeGroupBlogs", ".plugin", in_sign='sass', out_sign='', - method=self.massiveSubscribeGroupBlogs, - async = True) + method=self.massiveSubscribeGroupBlogs, + async=True) host.trigger.add("PubSubItemsReceived", self.pubSubItemsReceivedTrigger) - def getHandler(self, profile): return GroupBlog_handler() @@ -121,10 +125,10 @@ if not client: error(_('No client for this profile key: %s') % profile_key) raise Exception("Unknown profile") - yield client.client_initialized #we want to be sure that the client is initialized + yield client.client_initialized # we want to be sure that the client is initialized #we first check that we have a item-access pubsub server - if not hasattr(client,"item_access_pubsub"): + if not hasattr(client, "item_access_pubsub"): debug(_('Looking for item-access power pubsub server')) #we don't have any pubsub server featuring item access yet client.item_access_pubsub = None @@ -137,7 +141,7 @@ client.item_access_pubsub = entity client._item_access_pubsub_pending.callback(None) - if hasattr(client,"_item_access_pubsub_pending"): + if hasattr(client, "_item_access_pubsub_pending"): #XXX: we need to wait for item access pubsub service check yield client._item_access_pubsub_pending del client._item_access_pubsub_pending @@ -157,8 +161,8 @@ #FIXME: basic origin check, must be improved #TODO: automatic security test if (not (origin_host) - or len(event_host) < len(origin_host) - or event_host[-len(origin_host):] != origin_host): + or len(event_host) < len(origin_host) + or event_host[-len(origin_host):] != origin_host): warning("Host incoherence between %s and %s (hack attempt ?)" % (unicode(event.sender), unicode(publisher))) return @@ -169,7 +173,6 @@ return False return True - def _parseAccessData(self, microblog_data, item): form_elts = filter(lambda elt: elt.name == "x", item.children) for form_elt in form_elts: @@ -192,15 +195,12 @@ self._parseAccessData(microblog_data, item) return microblog_data - def getNodeName(self, publisher): """Retrieve the name of publisher's node @param publisher: publisher's jid @return: node's name (string)""" return NS_NODE_PREFIX + publisher.userhost() - - def _publishMblog(self, service, client, access_type, access_list, message): """Actually publish the message on the group blog @param service: jid of the item-access pubsub service @@ -209,7 +209,7 @@ @param access_list: set of entities (empty list for all, groups or jids) allowed to see the item @param message: message to publish """ - mblog_item = self.host.plugins["XEP-0277"].data2entry({'content':message}, client.profile) + mblog_item = self.host.plugins["XEP-0277"].data2entry({'content': message}, client.profile) form = data_form.Form('submit', formNamespace=NS_PUBSUB_ITEM_CONFIG) if access_type == "PUBLIC": if access_list: @@ -243,6 +243,7 @@ @profile_key: %(doc_profile)s """ print "sendGroupBlog" + def initialised(result): profile, client = result if access_type == "PUBLIC": @@ -250,7 +251,7 @@ raise Exception("Publishers list must be empty when getting microblogs for all contacts") self._publishMblog(client.item_access_pubsub, client, "PUBLIC", [], message) elif access_type == "GROUP": - _groups = set(access_list).intersection(client.roster.getGroups()) #We only keep group which actually exist + _groups = set(access_list).intersection(client.roster.getGroups()) # We only keep group which actually exist if not _groups: raise BadAccessListError("No valid group") self._publishMblog(client.item_access_pubsub, client, "GROUP", _groups, message) @@ -262,8 +263,6 @@ self.initialise(profile_key).addCallback(initialised) - - def getLastGroupBlogs(self, pub_jid, max_items=10, profile_key='@DEFAULT@'): """Get the last published microblogs @param pub_jid: jid of the publisher @@ -277,7 +276,7 @@ d = self.host.plugins["XEP-0060"].getItems(client.item_access_pubsub, self.getNodeName(jid.JID(pub_jid)), max_items=max_items, profile_key=profile_key) d.addCallback(lambda items: map(self.item2gbdata, items)) - d.addErrback(lambda ignore: {}) #TODO: more complete error management (log !) + d.addErrback(lambda ignore: {}) # TODO: more complete error management (log !) return d #TODO: we need to use the server corresponding the the host of the jid @@ -290,6 +289,7 @@ @param max_items: how many microblogs we want to get @param profile_key: profile key """ + def sendResult(result): """send result of DeferredList (list of microblogs to the calling method""" @@ -329,11 +329,10 @@ return dlist - #TODO: custom exception if publishers_type not in ["GROUP", "JID", "ALL"]: raise Exception("Bad call, unknown publishers_type") - if publishers_type=="ALL" and publishers: + if publishers_type == "ALL" and publishers: raise Exception("Publishers list must be empty when getting microblogs for all contacts") return self.initialise(profile_key).addCallback(initialised) #TODO: we need to use the server corresponding the the host of the jid @@ -348,13 +347,13 @@ #TODO: we need to use the server corresponding the the host of the jid return self.initialise(profile_key).addCallback(initialised) - def massiveSubscribeGroupBlogs(self, publishers_type, publishers, profile_key='@DEFAULT@'): """Subscribe 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 profile_key: profile key """ + def initialised(result): profile, client = result @@ -378,17 +377,15 @@ dlist = defer.DeferredList(mblogs) return dlist - #TODO: custom exception if publishers_type not in ["GROUP", "JID", "ALL"]: raise Exception("Bad call, unknown publishers_type") - if publishers_type=="ALL" and publishers: + if publishers_type == "ALL" and publishers: raise Exception("Publishers list must be empty when getting microblogs for all contacts") return self.initialise(profile_key).addCallback(initialised) #TODO: we need to use the server corresponding the the host of the jid - class GroupBlog_handler(XMPPHandler): implements(iwokkel.IDisco) @@ -397,4 +394,3 @@ def getDiscoItems(self, requestor, target, nodeIdentifier=''): return [] -