From f39e5358bc6dbb93a34fb52488840eec4f16f54b Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Mon, 1 Feb 2016 10:03:18 +0100 Subject: [PATCH] [FIX] website_forum: decrease indexed pages which will return 404 Add filter in domain converter to remove some posts in sitemap. Avoid to add in sitemap some pages that could not be read by public user due to a karma restriction. --- addons/website_forum/controllers/main.py | 3 +-- addons/website_forum/models/forum.py | 24 +++++++++++++++++++++++- openerp/osv/expression.py | 2 +- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index 449ce6a758d..5d697e18e68 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -220,9 +220,8 @@ class WebsiteForum(http.Controller): except URLError: return False - @http.route(['''/forum//question//question/'): + raise ValueError('Invalid operator: %s' % (operator,)) + + is_admin = self._uid == SUPERUSER_ID + if is_admin: + return [(1, '=', 1)] + + user = self.env['res.users'].browse(self._uid) + req = """ + SELECT p.id + FROM forum_post p + LEFT JOIN res_users u ON p.create_uid = u.id + LEFT JOIN forum_forum f ON p.forum_id = f.id + WHERE + u.karma > 0 + or (p.create_uid = %s and f.karma_close_own <= %s) + or (p.create_uid != %s and f.karma_close_all <= %s) + """ + # don't use param named because orm will add other param (test_active, ...) + return [('id', '%sselect' % (operator == "=" and "in" or "not in"), (req, (user.id, user.karma, user.id, user.karma)))] + @api.one @api.depends('content') def _get_plain_content(self): diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index d30b6a943cd..47b941485b2 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -907,7 +907,7 @@ class expression(object): push(leaf) else: for elem in reversed(domain): - push(create_substitution_leaf(leaf, elem, model)) + push(create_substitution_leaf(leaf, elem, model, internal=True)) # ------------------------------------------------- # FUNCTION FIELD