diff --git a/cloud/routes.py b/cloud/routes.py index 6613835..f701813 100644 --- a/cloud/routes.py +++ b/cloud/routes.py @@ -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.settings import blueprint as blueprint_settings from pillar.web.nodes.routes import url_for_node +from pillar.web.nodes.custom.comments import render_comments_for_node + blueprint = Blueprint('cloud', __name__) log = logging.getLogger(__name__) @@ -397,6 +399,26 @@ def emails_welcome_txt(): return flask.Response(txt, content_type='text/plain; charset=utf-8') +@blueprint.route('/nodes//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): global _homepage_context cached = app.cache.cached(timeout=300)