comparison src/plugins/plugin_misc_groupblog.py @ 1409:3265a2639182

massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
author souliane <souliane@mailoo.org>
date Thu, 16 Apr 2015 14:57:57 +0200
parents 069ad98b360d
children be2df1ddea8e
comparison
equal deleted inserted replaced
1408:8a7145138330 1409:3265a2639182
162 #we don't have any pubsub server featuring item access yet 162 #we don't have any pubsub server featuring item access yet
163 item_access_pubsubs = yield self.host.findFeaturesSet((NS_PUBSUB_AUTO_CREATE, NS_PUBSUB_CREATOR_JID_CHECK), "pubsub", "service", profile_key=profile) 163 item_access_pubsubs = yield self.host.findFeaturesSet((NS_PUBSUB_AUTO_CREATE, NS_PUBSUB_CREATOR_JID_CHECK), "pubsub", "service", profile_key=profile)
164 # item_access_pubsubs = yield self.host.findFeaturesSet((NS_PUBSUB_ITEM_ACCESS, NS_PUBSUB_AUTO_CREATE, NS_PUBSUB_CREATOR_JID_CHECK), "pubsub", "service", profile_key=profile) 164 # item_access_pubsubs = yield self.host.findFeaturesSet((NS_PUBSUB_ITEM_ACCESS, NS_PUBSUB_AUTO_CREATE, NS_PUBSUB_CREATOR_JID_CHECK), "pubsub", "service", profile_key=profile)
165 try: 165 try:
166 client.item_access_pubsub = item_access_pubsubs.pop() 166 client.item_access_pubsub = item_access_pubsubs.pop()
167 log.info(_("item-access powered pubsub service found: [%s]") % client.item_access_pubsub.full()) 167 log.info(_(u"item-access powered pubsub service found: [%s]") % client.item_access_pubsub.full())
168 except KeyError: 168 except KeyError:
169 client.item_access_pubsub = None 169 client.item_access_pubsub = None
170 170
171 if not client.item_access_pubsub: 171 if not client.item_access_pubsub:
172 log.error(_("No item-access powered pubsub server found, can't use group blog")) 172 log.error(_(u"No item-access powered pubsub server found, can't use group blog"))
173 raise NoCompatiblePubSubServerFound 173 raise NoCompatiblePubSubServerFound
174 174
175 defer.returnValue((profile, client)) 175 defer.returnValue((profile, client))
176 176
177 def pubSubItemsReceivedTrigger(self, event, profile): 177 def pubSubItemsReceivedTrigger(self, event, profile):
185 #FIXME: basic origin check, must be improved 185 #FIXME: basic origin check, must be improved
186 #TODO: automatic security test 186 #TODO: automatic security test
187 if (not (origin_host) 187 if (not (origin_host)
188 or len(event_host) < len(origin_host) 188 or len(event_host) < len(origin_host)
189 or event_host[-len(origin_host):] != origin_host): 189 or event_host[-len(origin_host):] != origin_host):
190 log.warning("Host incoherence between %s and %s (hack attempt ?)" % (unicode(event.sender), 190 log.warning(u"Host incoherence between %s and %s (hack attempt ?)" % (unicode(event.sender),
191 unicode(publisher))) 191 unicode(publisher)))
192 return False 192 return False
193 193
194 client = self.host.getClient(profile) 194 client = self.host.getClient(profile)
195 195
396 node = self.getNodeName(client.jid) 396 node = self.getNodeName(client.jid)
397 if comments: 397 if comments:
398 # remove the associated comments node 398 # remove the associated comments node
399 comments_service, comments_node = self.host.plugins["XEP-0277"].parseCommentUrl(comments) 399 comments_service, comments_node = self.host.plugins["XEP-0277"].parseCommentUrl(comments)
400 d = self.host.plugins["XEP-0060"].deleteNode(comments_service, comments_node, profile_key=profile) 400 d = self.host.plugins["XEP-0060"].deleteNode(comments_service, comments_node, profile_key=profile)
401 d.addErrback(lambda failure: log.error("Deletion of node %s failed: %s" % (comments_node, failure.getErrorMessage()))) 401 d.addErrback(lambda failure: log.error(u"Deletion of node %s failed: %s" % (comments_node, failure.getErrorMessage())))
402 # remove the item itself 402 # remove the item itself
403 d = self.host.plugins["XEP-0060"].retractItems(service_jid, node, [item_id], profile_key=profile) 403 d = self.host.plugins["XEP-0060"].retractItems(service_jid, node, [item_id], profile_key=profile)
404 d.addErrback(lambda failure: log.error("Deletion of item %s from %s failed: %s" % (item_id, node, failure.getErrorMessage()))) 404 d.addErrback(lambda failure: log.error(u"Deletion of item %s from %s failed: %s" % (item_id, node, failure.getErrorMessage())))
405 return d 405 return d
406 406
407 def notify(d): 407 def notify(d):
408 # TODO: this works only on the same host, and notifications for item deletion should be 408 # TODO: this works only on the same host, and notifications for item deletion should be
409 # implemented according to http://xmpp.org/extensions/xep-0060.html#publisher-delete-success-notify 409 # implemented according to http://xmpp.org/extensions/xep-0060.html#publisher-delete-success-notify
448 # XXX: use the item identifier? http://bugs.goffi.org/show_bug.cgi?id=63 448 # XXX: use the item identifier? http://bugs.goffi.org/show_bug.cgi?id=63
449 entry_id = comments_node.split('_')[1].split('__')[0] 449 entry_id = comments_node.split('_')[1].split('__')[0]
450 self.__fillCommentsElement(mblog_data, entry_id, node, service_jid) 450 self.__fillCommentsElement(mblog_data, entry_id, node, service_jid)
451 entry_d = self.host.plugins["XEP-0277"].data2entry(mblog_data, profile) 451 entry_d = self.host.plugins["XEP-0277"].data2entry(mblog_data, profile)
452 entry_d.addCallback(lambda mblog_item: self.host.plugins["XEP-0060"].publish(service_jid, node, items=[mblog_item], profile_key=profile)) 452 entry_d.addCallback(lambda mblog_item: self.host.plugins["XEP-0060"].publish(service_jid, node, items=[mblog_item], profile_key=profile))
453 entry_d.addErrback(lambda failure: log.error("Modification of %s failed: %s" % (pub_data, failure.getErrorMessage()))) 453 entry_d.addErrback(lambda failure: log.error(u"Modification of %s failed: %s" % (pub_data, failure.getErrorMessage())))
454 return entry_d 454 return entry_d
455 455
456 return self._initialise(profile_key).addCallback(initialised) 456 return self._initialise(profile_key).addCallback(initialised)
457 457
458 def sendGroupBlogComment(self, node_url, message, extra, profile_key=C.PROF_KEY_NONE): 458 def sendGroupBlogComment(self, node_url, message, extra, profile_key=C.PROF_KEY_NONE):
492 @defer.inlineCallbacks 492 @defer.inlineCallbacks
493 def cb(gbdata): 493 def cb(gbdata):
494 try: 494 try:
495 gbdata['service'] = client.item_access_pubsub.full() 495 gbdata['service'] = client.item_access_pubsub.full()
496 except AttributeError: 496 except AttributeError:
497 log.warning(_("Pubsub service is unknown for blog entry %s") % gbdata['id']) 497 log.warning(_(u"Pubsub service is unknown for blog entry %s") % gbdata['id'])
498 # every comments node must be subscribed, except if we are the publisher (we are already subscribed in this case) 498 # every comments node must be subscribed, except if we are the publisher (we are already subscribed in this case)
499 if "comments_node" in gbdata and pub_jid.userhostJID() != client.jid.userhostJID(): 499 if "comments_node" in gbdata and pub_jid.userhostJID() != client.jid.userhostJID():
500 try: 500 try:
501 service = jid.JID(gbdata["comments_service"]) 501 service = jid.JID(gbdata["comments_service"])
502 node = gbdata["comments_node"] 502 node = gbdata["comments_node"]
503 except KeyError: 503 except KeyError:
504 log.error(_("Missing key for blog comment %s") % gbdata['id']) 504 log.error(_(u"Missing key for blog comment %s") % gbdata['id'])
505 defer.returnValue(gbdata) 505 defer.returnValue(gbdata)
506 # TODO: see if it is really needed to check for not subscribing twice to the node 506 # TODO: see if it is really needed to check for not subscribing twice to the node
507 # It previously worked without this check, but the pubsub service logs were polluted 507 # It previously worked without this check, but the pubsub service logs were polluted
508 # or, if in debug mode, it made sat-pubsub very difficult to debug. 508 # or, if in debug mode, it made sat-pubsub very difficult to debug.
509 subscribed_nodes = yield self.host.plugins['XEP-0060'].listSubscribedNodes(service, profile=client.profile) 509 subscribed_nodes = yield self.host.plugins['XEP-0060'].listSubscribedNodes(service, profile=client.profile)
764 764
765 def cb(nodes): 765 def cb(nodes):
766 d_list = [] 766 d_list = []
767 for node in [node for node in nodes if node.endswith(main_node)]: 767 for node in [node for node in nodes if node.endswith(main_node)]:
768 d = self.host.plugins["XEP-0060"].deleteNode(service, node, profile_key=profile) 768 d = self.host.plugins["XEP-0060"].deleteNode(service, node, profile_key=profile)
769 d.addErrback(lambda failure: log.error(_("Deletion of node %(node)s failed: %(message)s") % 769 d.addErrback(lambda failure: log.error(_(u"Deletion of node %(node)s failed: %(message)s") %
770 {'node': node, 'message': failure.getErrorMessage()})) 770 {'node': node, 'message': failure.getErrorMessage()}))
771 d_list.append(d) 771 d_list.append(d)
772 return defer.DeferredList(d_list) 772 return defer.DeferredList(d_list)
773 773
774 d = self.host.plugins["XEP-0060"].listNodes(service, profile=profile) 774 d = self.host.plugins["XEP-0060"].listNodes(service, profile=profile)
775 d.addCallback(cb) 775 d.addCallback(cb)
776 d.addCallback(lambda dummy: log.info(_("All microblog's main items from %s have been deleted!") % jid_.userhost())) 776 d.addCallback(lambda dummy: log.info(_(u"All microblog's main items from %s have been deleted!") % jid_.userhost()))
777 return d 777 return d
778 778
779 return self._initialise(profile_key).addCallback(initialised) 779 return self._initialise(profile_key).addCallback(initialised)
780 780
781 def deleteAllGroupBlogsComments(self, profile_key=C.PROF_KEY_NONE): 781 def deleteAllGroupBlogsComments(self, profile_key=C.PROF_KEY_NONE):
795 if jid_ == client.jid.userhostJID(): 795 if jid_ == client.jid.userhostJID():
796 continue # do not remove the comments on our own node 796 continue # do not remove the comments on our own node
797 main_node = self.getNodeName(jid_) 797 main_node = self.getNodeName(jid_)
798 d = self.host.plugins["XEP-0060"].getItems(service, main_node, profile_key=profile) 798 d = self.host.plugins["XEP-0060"].getItems(service, main_node, profile_key=profile)
799 d.addCallback(lambda res: getComments(res[0], client)) 799 d.addCallback(lambda res: getComments(res[0], client))
800 d.addErrback(lambda failure, main_node: log.error(_("Retrieval of items for node %(node)s failed: %(message)s") % 800 d.addErrback(lambda failure, main_node: log.error(_(u"Retrieval of items for node %(node)s failed: %(message)s") %
801 {'node': main_node, 'message': failure.getErrorMessage()}), main_node) 801 {'node': main_node, 'message': failure.getErrorMessage()}), main_node)
802 blogs.append(d) 802 blogs.append(d)
803 803
804 return defer.DeferredList(blogs) 804 return defer.DeferredList(blogs)
805 805
818 continue 818 continue
819 href = link.getAttribute('href') 819 href = link.getAttribute('href')
820 service, node = self.host.plugins['XEP-0277'].parseCommentUrl(href) 820 service, node = self.host.plugins['XEP-0277'].parseCommentUrl(href)
821 d = self.host.plugins["XEP-0060"].getItems(service, node, profile_key=profile_key) 821 d = self.host.plugins["XEP-0060"].getItems(service, node, profile_key=profile_key)
822 d.addCallback(lambda items: (service, node, items[0])) 822 d.addCallback(lambda items: (service, node, items[0]))
823 d.addErrback(lambda failure, node: log.error(_("Retrieval of comments for node %(node)s failed: %(message)s") % 823 d.addErrback(lambda failure, node: log.error(_(u"Retrieval of comments for node %(node)s failed: %(message)s") %
824 {'node': node, 'message': failure.getErrorMessage()}), node) 824 {'node': node, 'message': failure.getErrorMessage()}), node)
825 comments.append(d) 825 comments.append(d)
826 dlist = defer.DeferredList(comments) 826 dlist = defer.DeferredList(comments)
827 dlist.addCallback(deleteComments, client) 827 dlist.addCallback(deleteComments, client)
828 return dlist 828 return dlist
850 if name.children[0] == user_jid_s: 850 if name.children[0] == user_jid_s:
851 item_ids.append(comment_item.getAttribute('id')) 851 item_ids.append(comment_item.getAttribute('id'))
852 deletions = [] 852 deletions = []
853 if item_ids: # remove the comments of the user on the given post 853 if item_ids: # remove the comments of the user on the given post
854 d = self.host.plugins['XEP-0060'].retractItems(service, node_id, item_ids, profile_key=profile_key) 854 d = self.host.plugins['XEP-0060'].retractItems(service, node_id, item_ids, profile_key=profile_key)
855 d.addCallback(lambda dummy, node_id: log.debug(_('Comments of user %(user)s in node %(node)s have been retracted') % 855 d.addCallback(lambda dummy, node_id: log.debug(_(u'Comments of user %(user)s in node %(node)s have been retracted') %
856 {'user': user_jid_s, 'node': node_id}), node_id) 856 {'user': user_jid_s, 'node': node_id}), node_id)
857 d.addErrback(lambda failure, node_id: log.error(_("Retraction of comments from %(user)s in node %(node)s failed: %(message)s") % 857 d.addErrback(lambda failure, node_id: log.error(_(u"Retraction of comments from %(user)s in node %(node)s failed: %(message)s") %
858 {'user': user_jid_s, 'node': node_id, 'message': failure.getErrorMessage()}), node_id) 858 {'user': user_jid_s, 'node': node_id, 'message': failure.getErrorMessage()}), node_id)
859 deletions.append(d) 859 deletions.append(d)
860 return defer.DeferredList(deletions) 860 return defer.DeferredList(deletions)
861 861
862 return self._initialise(profile_key).addCallback(initialised) 862 return self._initialise(profile_key).addCallback(initialised)