From f274572c304ffcd6356979e27256103da9590b2b Mon Sep 17 00:00:00 2001 From: Jay Patel Date: Thu, 10 Jul 2014 15:44:51 +0530 Subject: [PATCH] [FIX] website_forum: when a user posting a new answer or question does not have a valid email address, redirect to the user's profile instead of crashing when trying to send notifications. --- addons/website_forum/controllers/main.py | 7 +++++++ addons/website_forum/static/src/css/website_forum.css | 8 ++++++++ addons/website_forum/static/src/css/website_forum.sass | 7 +++++++ addons/website_forum/views/website_forum.xml | 4 ++++ 4 files changed, 26 insertions(+) diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index 78d69de971b..a221d97284f 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -3,6 +3,7 @@ from datetime import datetime import werkzeug.urls import werkzeug.wrappers +import re import simplejson from openerp import tools @@ -12,6 +13,7 @@ from openerp.addons.web.controllers.main import login_redirect from openerp.addons.web.http import request from openerp.addons.website.controllers.main import Website as controllers from openerp.addons.website.models.website import slug +from openerp.tools.translate import _ controllers = controllers() @@ -276,6 +278,10 @@ class WebsiteForum(http.Controller): def post_new(self, forum, post, **kwargs): if not request.session.uid: return login_redirect() + cr, uid, context = request.cr, request.uid, request.context + user = request.registry['res.users'].browse(cr, SUPERUSER_ID, uid, context=context) + if not user.email or not tools.single_email_re.match(user.email): + return werkzeug.utils.redirect("/forum/%s/user/%s/edit?email_required=1" % (slug(forum), uid)) request.registry['forum.post'].create( request.cr, request.uid, { 'forum_id': forum.id, @@ -517,6 +523,7 @@ class WebsiteForum(http.Controller): countries = country.browse(request.cr, SUPERUSER_ID, country_ids, context=request.context) values = self._prepare_forum_values(forum=forum, searches=kwargs) values.update({ + 'email_required': kwargs.get('email_required'), 'countries': countries, 'notifications': self._get_notifications(), }) diff --git a/addons/website_forum/static/src/css/website_forum.css b/addons/website_forum/static/src/css/website_forum.css index d3af4309b24..27d5247058b 100644 --- a/addons/website_forum/static/src/css/website_forum.css +++ b/addons/website_forum/static/src/css/website_forum.css @@ -112,6 +112,14 @@ a.no-decoration { z-index: 9999; } +.oe_forum_email_required { + position: absolute; + margin-top: 155px; + margin-left: 500px; + margin-right: 100px; + z-index: 5; +} + button.btn-link.text-muted { color: #999999; } diff --git a/addons/website_forum/static/src/css/website_forum.sass b/addons/website_forum/static/src/css/website_forum.sass index c14e91e2893..1d8df0ab92e 100644 --- a/addons/website_forum/static/src/css/website_forum.sass +++ b/addons/website_forum/static/src/css/website_forum.sass @@ -91,5 +91,12 @@ a.no-decoration width: 300px z-index: 9999 +.oe_forum_email_required + position: absolute + margin-top: 155px + margin-left: 500px + margin-right: 100px + z-index: 5 + button.btn-link.text-muted color: #999 diff --git a/addons/website_forum/views/website_forum.xml b/addons/website_forum/views/website_forum.xml index db054f83499..fd2a8118099 100644 --- a/addons/website_forum/views/website_forum.xml +++ b/addons/website_forum/views/website_forum.xml @@ -832,6 +832,10 @@
+
+ +

Please enter a valid email address in order to receive notifications from answers or comments.

+