From 093e39bd1779da1449556a6873d7fdd444edfb56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Maes?= Date: Fri, 27 Mar 2015 17:36:05 +0100 Subject: [PATCH] [IMP] web, website_blog, website_forum, website_sale : uniformize the way to add comment by redirecting to login form (if not logged) and keep the parameters (i.e. the comment) when redirecting to the comment route. The comment route must now be GET and POST. --- addons/web/controllers/main.py | 8 +++---- addons/website_blog/controllers/main.py | 21 +++++++------------ .../views/website_blog_templates.xml | 2 +- addons/website_forum/controllers/main.py | 4 ++-- addons/website_sale/controllers/main.py | 4 ++-- 5 files changed, 16 insertions(+), 23 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 2603d877c24..8a052ef4989 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -311,12 +311,12 @@ def set_cookie_and_redirect(redirect_url): def login_redirect(): url = '/web/login?' - if request.debug: - url += 'debug&' + # built the redirect url, keeping all the query parameters of the url + redirect_url = '%s?%s' % (request.httprequest.base_url, werkzeug.urls.url_encode(request.params)) return """ - """ % (url,) + """ % (url, redirect_url) def load_actions_from_ir_values(key, key2, models, meta): Values = request.session.model('ir.values') diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py index adb10d4de07..d13f96c4ed3 100644 --- a/addons/website_blog/controllers/main.py +++ b/addons/website_blog/controllers/main.py @@ -2,13 +2,13 @@ import datetime import json -import urllib import werkzeug from openerp import tools from openerp.addons.web import http from openerp.addons.web.http import request from openerp.addons.website.models.website import slug, unslug +from openerp.addons.web.controllers.main import login_redirect from openerp.exceptions import UserError from openerp.osv.orm import browse_record from openerp.tools.translate import _ @@ -271,22 +271,15 @@ class WebsiteBlog(http.Controller): context=context) return message_id - @http.route(['/blog/post_comment'], type='http', auth="public", methods=['GET', 'POST'], website=True) + @http.route(['/blog/post_comment/'], type='http', auth="public", website=True) def blog_post_comment(self, blog_post_id=0, **kw): + if not request.session.uid: + return login_redirect() cr, uid, context = request.cr, request.uid, request.context - redirect_url = request.httprequest.referrer + "#comments" if kw.get('comment'): - if not request.session.uid: # if not logged, redirect to the login form, keeping the url to post the comment - kw['comment'] = kw.get('comment').encode('utf8') # avoid crash from urlencode if accent - url = '/blog/post_comment/?blog_post_id=%s&%s' % (blog_post_id, urllib.urlencode(kw)) - redirect_url = '/web/login?redirect=%s' % urllib.quote(url) - else: - blog_post_id = int(blog_post_id) - blog_post = request.registry['blog.post'] - post = blog_post.browse(cr, uid, blog_post_id, context=context) - self._blog_post_message(blog_post_id, kw.get('comment'), **kw) - redirect_url = "/blog/%s/post/%s#comments" % (slug(post.blog_id), slug(post)) - return werkzeug.utils.redirect(redirect_url) + self._blog_post_message(blog_post_id, kw.get('comment'), **kw) + blog_post = request.registry['blog.post'].browse(cr, uid, blog_post_id, context=context) + return werkzeug.utils.redirect("/blog/%s/post/%s#comments" % (slug(blog_post.blog_id), slug(blog_post))) def _get_discussion_detail(self, ids, publish=False, **post): diff --git a/addons/website_blog/views/website_blog_templates.xml b/addons/website_blog/views/website_blog_templates.xml index 2bf32c69bfb..7efe5dfb0cf 100644 --- a/addons/website_blog/views/website_blog_templates.xml +++ b/addons/website_blog/views/website_blog_templates.xml @@ -294,7 +294,7 @@
-
+
diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index 285124280d2..7efba912ef0 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -313,7 +313,7 @@ class WebsiteForum(http.Controller): @http.route(['/forum//new', '/forum///reply'], - type='http', auth="public", methods=['POST'], website=True) + type='http', auth="public", website=True) def post_create(self, forum, post_parent=None, post_type=None, **post): if not request.session.uid: return login_redirect() @@ -329,7 +329,7 @@ class WebsiteForum(http.Controller): }) return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum), post_parent and slug(post_parent) or new_question.id)) - @http.route('/forum//post//comment', type='http', auth="public", methods=['POST'], website=True) + @http.route('/forum//post//comment', type='http', auth="public", website=True) def post_comment(self, forum, post, **kwargs): if not request.session.uid: return login_redirect() diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 83496d4b9f2..ee1dc432273 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -289,7 +289,7 @@ class website_sale(http.Controller): } return request.website.render("website_sale.product", values) - @http.route(['/shop/product/comment/'], type='http', auth="public", methods=['POST'], website=True) + @http.route(['/shop/product/comment/'], type='http', auth="public", website=True) def product_comment(self, product_template_id, **post): if not request.session.uid: return login_redirect() @@ -301,7 +301,7 @@ class website_sale(http.Controller): type='comment', subtype='mt_comment', context=dict(context, mail_create_nosubscribe=True)) - return werkzeug.utils.redirect(request.httprequest.referrer + "#comments") + return werkzeug.utils.redirect('/shop/product/%s#comments' % product_template_id) @http.route(['/shop/pricelist'], type='http', auth="public", website=True) def pricelist(self, promo, **post):