diff --git a/plone/app/discussion/browser/moderation.py b/plone/app/discussion/browser/moderation.py index 25a5b61..4e44a9b 100644 --- a/plone/app/discussion/browser/moderation.py +++ b/plone/app/discussion/browser/moderation.py @@ -21,7 +21,7 @@ class View(BrowserView): except AttributeError: # id is not writeable in Zope 2.12 pass - + def __call__(self): self.request.set('disable_border', True) context = aq_inner(self.context) @@ -31,7 +31,7 @@ class View(BrowserView): sort_on='created', sort_order='reverse') return self.template() - + def moderation_enabled(self): """Returns true if a 'review workflow' is enabled on 'Discussion Item' content type. A 'review workflow' is characterized by implementing @@ -39,7 +39,8 @@ class View(BrowserView): """ context = aq_inner(self.context) workflowTool = getToolByName(context, 'portal_workflow') - comment_workflow = workflowTool.getChainForPortalType('Discussion Item') + comment_workflow = workflowTool.getChainForPortalType( + 'Discussion Item') if comment_workflow: comment_workflow = comment_workflow[0] comment_workflow = workflowTool[comment_workflow] @@ -57,37 +58,38 @@ class ModerateCommentsEnabled(BrowserView): """ context = aq_inner(self.context) workflowTool = getToolByName(context, 'portal_workflow', None) - comment_workflow = workflowTool.getChainForPortalType('Discussion Item') + comment_workflow = workflowTool.getChainForPortalType( + 'Discussion Item') if comment_workflow: comment_workflow = comment_workflow[0] comment_workflow = workflowTool[comment_workflow] if 'pending' in comment_workflow.states: return True - + return False class DeleteComment(BrowserView): """Delete a comment from a conversation. - + This view is always called directly on the comment object: - + http://nohost/front-page/++conversation++default/1286289644723317/\ @@moderate-delete-comment - + Each table row (comment) in the moderation view contains a hidden input field with the absolute URL of the content object: - + - + This absolute URL is called from a jQuery method that is bind to the 'delete' button of the table row. See javascripts/moderation.js for more details. """ - + def __call__(self): comment = aq_inner(self.context) conversation = aq_parent(comment) @@ -104,25 +106,25 @@ class DeleteComment(BrowserView): class PublishComment(BrowserView): """Publish a comment. - + This view is always called directly on the comment object: - + http://nohost/front-page/++conversation++default/1286289644723317/\ @@moderate-publish-comment - + Each table row (comment) in the moderation view contains a hidden input field with the absolute URL of the content object: - + - + This absolute URL is called from a jQuery method that is bind to the 'delete' button of the table row. See javascripts/moderation.js for more details. """ - + def __call__(self): comment = aq_inner(self.context) content_object = aq_parent(aq_parent(comment)) @@ -140,29 +142,30 @@ class PublishComment(BrowserView): came_from = content_object.absolute_url() return self.context.REQUEST.RESPONSE.redirect(came_from) + class BulkActionsView(BrowserView): """Bulk actions (unapprove, approve, delete, mark as spam). - + Each table row of the moderation view has a checkbox with the absolute path (without host and port) of the comment objects: - + - + If checked, the comment path will occur in the 'paths' variable of the request when the bulk actions view is called. The bulk action (delete, publish, etc.) will be applied to all comments that are included. - + The paths have to be 'traversable': - + /plone/front-page/++conversation++default/1286289644723317 - + """ - + def __call__(self): if 'form.select.BulkAction' in self.request: bulkaction = self.request.get('form.select.BulkAction') @@ -180,18 +183,18 @@ class BulkActionsView(BrowserView): elif bulkaction == 'delete': self.delete() else: - raise KeyError # pragma: no cover - + raise KeyError # pragma: no cover + def retract(self): raise NotImplementedError - + def publish(self): """Publishes all comments in the paths variable. - + Expects a list of absolute paths (without host and port): - + /Plone/startseite/++conversation++default/1286200010610352 - + """ context = aq_inner(self.context) for path in self.paths: @@ -202,17 +205,17 @@ class BulkActionsView(BrowserView): workflowTool.doActionFor(comment, 'publish') catalog = getToolByName(comment, 'portal_catalog') catalog.reindexObject(comment) - + def mark_as_spam(self): raise NotImplementedError - + def delete(self): """Deletes all comments in the paths variable. - + Expects a list of absolute paths (without host and port): - + /Plone/startseite/++conversation++default/1286200010610352 - + """ context = aq_inner(self.context) for path in self.paths: