[MRG] lp:~openerp-dev/openobject-addons/trunk-website-forum-tpa-template_ans-ssh improved code to allow anonymious and other user to use froum, if user have not logged in then redirect for login.

bzr revid: tpa@tinyerp.com-20140324132706-bwqke4n73igkwdgf
This commit is contained in:
Turkesh Patel (Open ERP) 2014-03-24 18:57:06 +05:30
commit db20e4d2af
3 changed files with 25 additions and 7 deletions

View File

@ -32,6 +32,7 @@ from openerp.addons.web.http import request
from dateutil.relativedelta import relativedelta
from openerp.addons.website.controllers.main import Website as controllers
from openerp.addons.website.models.website import slug
from openerp.addons.web.controllers.main import login_redirect
controllers = controllers()
@ -131,6 +132,8 @@ class website_forum(http.Controller):
@http.route(['/forum/<model("website.forum"):forum>/ask'], type='http', auth="public", website=True, multilang=True)
def question_ask(self, forum, **post):
if not request.session.uid:
return login_redirect()
values = {
'searches': {},
'forum': forum,
@ -158,6 +161,8 @@ class website_forum(http.Controller):
@http.route(['/forum/<model("website.forum"):forum>/comment'], type='http', auth="public", methods=['POST'], website=True)
def post_comment(self, forum, post_id, **kwargs):
if not request.session.uid:
return login_redirect()
cr, uid, context = request.cr, request.uid, request.context
if kwargs.get('comment'):
user = request.registry['res.users'].browse(cr, SUPERUSER_ID, uid, context=context)
@ -242,6 +247,7 @@ class website_forum(http.Controller):
@http.route('/forum/<model("website.forum"):forum>/question/ask/', type='http', auth="user", multilang=True, methods=['POST'], website=True)
def register_question(self, forum, **question):
cr, uid, context = request.cr, request.uid, request.context
create_context = dict(context)
tags = question.get('question_tags').strip('[]').replace('"','').split(",")
@ -262,8 +268,10 @@ class website_forum(http.Controller):
}, context=create_context)
return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum),new_question_id))
@http.route('/forum/<model("website.forum"):forum>/question/postanswer/', type='http', auth="user", multilang=True, methods=['POST'], website=True)
def post_answer(self, forum, post_id, **question):
@http.route('/forum/<model("website.forum"):forum>/question/postanswer/', type='http', auth="public", multilang=True, methods=['POST'], website=True)
def post_answer(self, forum ,post_id, **question):
if not request.session.uid:
return login_redirect()
cr, uid, context = request.cr, request.uid, request.context
request.registry['res.users'].write(cr, uid, uid, {'forum': True}, context=context)
@ -399,8 +407,10 @@ class website_forum(http.Controller):
request.registry['website.forum.post'].unlink(request.cr, request.uid, [int(kwarg.get('post_id'))], context=request.context)
return True
@http.route('/forum/<model("website.forum"):forum>/delete/question/<model("website.forum.post"):post>', type='http', auth="user", multilang=True, website=True)
@http.route('/forum/<model("website.forum"):forum>/delete/question/<model("website.forum.post"):post>', type='http', auth="public", multilang=True, website=True)
def delete_question(self, forum, post, **kwarg):
if not request.session.uid:
return login_redirect()
#instead of unlink record just change 'active' to false so user can undelete it.
request.registry['website.forum.post'].write( request.cr, request.uid, [post.id], {
'active': False,
@ -419,8 +429,11 @@ class website_forum(http.Controller):
request.registry['mail.message'].unlink(request.cr, request.uid, [int(kwarg.get('message_id'))], context=request.context)
return True
@http.route('/forum/<model("website.forum"):forum>/edit/question/<model("website.forum.post"):post>', type='http', auth="user", multilang=True, website=True)
@http.route('/forum/<model("website.forum"):forum>/edit/question/<model("website.forum.post"):post>', type='http', auth="public", multilang=True, website=True)
def edit_question(self, forum, post, **kwarg):
if not request.session.uid:
return login_redirect()
tags = ""
for tag_name in post.tags:
tags += tag_name.name + ","
@ -477,8 +490,10 @@ class website_forum(http.Controller):
}, context=context)
return correct
@http.route('/forum/<model("website.forum"):forum>/close/question/<model("website.forum.post"):post>', type='http', auth="user", multilang=True, website=True)
@http.route('/forum/<model("website.forum"):forum>/close/question/<model("website.forum.post"):post>', type='http', auth="public", multilang=True, website=True)
def close_question(self, forum, post, **kwarg):
if not request.session.uid:
return login_redirect()
cr, uid, context = request.cr, request.uid, request.context
Reason = request.registry['website.forum.post.reason']
reason_ids = Reason.search(cr, uid, [], context=context)
@ -505,6 +520,8 @@ class website_forum(http.Controller):
@http.route('/forum/<model("website.forum"):forum>/reopen/question/<model("website.forum.post"):post>', type='http', auth="user", multilang=True, website=True)
def reopen(self, forum, post, **kwarg):
if not request.session.uid:
return login_redirect()
request.registry['website.forum.post'].write( request.cr, request.uid, [post.id], {
'state': 'active',
}, context=request.context)

View File

@ -6,4 +6,5 @@ access_website_forum_post_history,website.forum.post.history,model_website_forum
access_website_forum_post_vote,website.forum.post.vote,model_website_forum_post_vote,base.group_public,1,0,0,0
access_website_forum_post_reason,website.forum.post.reason,model_website_forum_post_reason,base.group_public,1,0,0,0
access_website_forum_tag,website.forum.tag,model_website_forum_tag,base.group_public,1,0,0,0
access_gamification_badge_user,gamification.badge.user,gamification.model_gamification_badge_user,base.group_public,1,0,0,0
access_gamification_badge,gamification_badge,gamification.model_gamification_badge,base.group_public,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
6 access_website_forum_post_reason website.forum.post.reason model_website_forum_post_reason base.group_public 1 0 0 0
7 access_website_forum_tag website.forum.tag model_website_forum_tag base.group_public 1 0 0 0
8 access_gamification_badge_user gamification.badge.user gamification.model_gamification_badge_user base.group_public 1 0 0 0
9 access_gamification_badge gamification_badge gamification.model_gamification_badge base.group_public 1 0 0 0
10

View File

@ -43,7 +43,7 @@ $(document).ready(function () {
if (data == false){
vote_alert = $link.parents().find("#vote_alert");
if (vote_alert.length <= 1) {
var $warning = $('<div class="alert alert-danger alert-dismissable" id="vote_alert" style="position: fixed; margin-top: -75px;">'+
var $warning = $('<div class="alert alert-danger alert-dismissable" id="vote_alert" style="position:absolute; margin-top: -30px; margin-left: 90px;">'+
'<button type="button" class="close notification_close" data-dismiss="alert" aria-hidden="true">&times;</button>'+
'Sorry, you cannot vote for your own posts'+
'</div>');