Override for comments_for_node
Make use of the render_comments_for_node function, and define custom logic to determine the value of can_post_comments.
This commit is contained in:
@@ -16,6 +16,8 @@ from pillar.web.utils import system_util, get_file, current_user_is_authenticate
|
|||||||
from pillar.web.utils import attach_project_pictures
|
from pillar.web.utils import attach_project_pictures
|
||||||
from pillar.web.settings import blueprint as blueprint_settings
|
from pillar.web.settings import blueprint as blueprint_settings
|
||||||
from pillar.web.nodes.routes import url_for_node
|
from pillar.web.nodes.routes import url_for_node
|
||||||
|
from pillar.web.nodes.custom.comments import render_comments_for_node
|
||||||
|
|
||||||
|
|
||||||
blueprint = Blueprint('cloud', __name__)
|
blueprint = Blueprint('cloud', __name__)
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@@ -397,6 +399,26 @@ def emails_welcome_txt():
|
|||||||
return flask.Response(txt, content_type='text/plain; charset=utf-8')
|
return flask.Response(txt, content_type='text/plain; charset=utf-8')
|
||||||
|
|
||||||
|
|
||||||
|
@blueprint.route('/nodes/<string(length=24):node_id>/comments')
|
||||||
|
def comments_for_node(node_id):
|
||||||
|
"""Overrides the default render_comments_for_node.
|
||||||
|
|
||||||
|
This is done in order to extend can_post_comments by requiring the
|
||||||
|
subscriber capability.
|
||||||
|
"""
|
||||||
|
|
||||||
|
api = system_util.pillar_api()
|
||||||
|
|
||||||
|
node = Node.find(node_id, api=api)
|
||||||
|
project = Project({'_id': node.project})
|
||||||
|
can_post_comments = project.node_type_has_method('comment', 'POST', api=api)
|
||||||
|
can_comment_override = flask.request.args.get('can_comment', 'True') == 'True'
|
||||||
|
can_post_comments = can_post_comments and can_comment_override and current_user.has_cap(
|
||||||
|
'subscriber')
|
||||||
|
|
||||||
|
return render_comments_for_node(node_id, can_post_comments=can_post_comments)
|
||||||
|
|
||||||
|
|
||||||
def setup_app(app):
|
def setup_app(app):
|
||||||
global _homepage_context
|
global _homepage_context
|
||||||
cached = app.cache.cached(timeout=300)
|
cached = app.cache.cached(timeout=300)
|
||||||
|
Reference in New Issue
Block a user