summaryrefslogtreecommitdiff
path: root/addons/website_forum/controllers
diff options
context:
space:
mode:
authorJeremy Kersten <jke@odoo.com>2018-07-25 16:51:50 +0200
committerJeremy Kersten <jke@odoo.com>2018-08-13 20:16:34 +0200
commit066cfc9598a307a48b86104f4bf861a58de09b41 (patch)
treed22a4c1336bc7e639c8afa35c9ffebf01d964475 /addons/website_forum/controllers
parent8300155cd6133e0b8496cf4505081a1626e6f0aa (diff)
[IMP] website_[blog|event|forum|sale|slide]: make website specific
Set up env & tools for module website multiwebsite (blog, event, sale..) website_id in modelConverter and ir_rule add _compute_domain_keys to have a different cache per website or rules would not be correctly website_dependant eg: blog 1 on website 1, blog 2 on website 2 access blog 1 from website 1 => can access -> normal access blog 1 from website 2 => can access -> should crash because (ir rule) split mixing website.published.mixin and website.published.multi.mixin to have website_id only on last one. multi mixing will: - override website_published compute to take current_website into account (not in backend) - force website when clicking on published in backend - website blog, website_sale, website_event, website_forum, website_slides are now multi website Co-authored-by: Derie Romain <rde@odoo.com> Co-authored-by: Kersten Jérémy <jke@odoo.com>
Diffstat (limited to 'addons/website_forum/controllers')
-rw-r--r--addons/website_forum/controllers/main.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py
index c45e7a2e30a..94f7864e95b 100644
--- a/addons/website_forum/controllers/main.py
+++ b/addons/website_forum/controllers/main.py
@@ -81,7 +81,8 @@ class WebsiteForum(http.Controller):
@http.route(['/forum'], type='http', auth="public", website=True)
def forum(self, **kwargs):
- forums = request.env['forum.forum'].search([])
+ domain = request.website.get_current_website().website_domain()
+ forums = request.env['forum.forum'].search(domain)
return request.render("website_forum.forum_all", {'forums': forums})
@http.route('/forum/new', type='json', auth="user", methods=['POST'], website=True)
@@ -104,6 +105,7 @@ class WebsiteForum(http.Controller):
def sitemap_forum(env, rule, qs):
Forum = env['forum.forum']
dom = sitemap_qs2dom(qs, '/forum', Forum._rec_name)
+ dom += env['website'].get_current_website().website_domain()
for f in Forum.search(dom):
loc = '/forum/%s' % slug(f)
if not qs or qs.lower() in loc:
@@ -115,6 +117,9 @@ class WebsiteForum(http.Controller):
'''/forum/<model("forum.forum"):forum>/tag/<model("forum.tag"):tag>/questions/page/<int:page>''',
], type='http', auth="public", website=True, sitemap=sitemap_forum)
def questions(self, forum, tag=None, page=1, filters='all', sorting=None, search='', post_type=None, **post):
+ if not forum.can_access_from_current_website():
+ raise werkzeug.exceptions.NotFound()
+
Post = request.env['forum.post']
domain = [('forum_id', '=', forum.id), ('parent_id', '=', False), ('state', '=', 'active')]
@@ -174,7 +179,7 @@ class WebsiteForum(http.Controller):
})
return request.render("website_forum.forum_index", values)
- @http.route(['/forum/<model("forum.forum"):forum>/faq'], type='http', auth="public", website=True)
+ @http.route(['''/forum/<model("forum.forum", "[('website_id', 'in', (False, current_website_id))]"):forum>/faq'''], type='http', auth="public", website=True)
def forum_faq(self, forum, **post):
values = self._prepare_forum_values(forum=forum, searches=dict(), header={'is_guidelines': True}, **post)
return request.render("website_forum.faq", values)
@@ -232,7 +237,7 @@ class WebsiteForum(http.Controller):
except IOError:
return False
- @http.route(['''/forum/<model("forum.forum"):forum>/question/<model("forum.post", "[('forum_id','=',forum[0]),('parent_id','=',False),('can_view', '=', True)]"):question>'''], type='http', auth="public", website=True)
+ @http.route(['''/forum/<model("forum.forum", "[('website_id', 'in', (False, current_website_id))]"):forum>/question/<model("forum.post", "[('forum_id','=',forum[0]),('parent_id','=',False),('can_view', '=', True)]"):question>'''], type='http', auth="public", website=True)
def question(self, forum, question, **post):
if not forum.active:
return request.render("website_forum.header", {'forum': forum})
@@ -548,8 +553,8 @@ class WebsiteForum(http.Controller):
# User
# --------------------------------------------------
- @http.route(['/forum/<model("forum.forum"):forum>/users',
- '/forum/<model("forum.forum"):forum>/users/page/<int:page>'],
+ @http.route(['''/forum/<model("forum.forum", "[('website_id', 'in', (False, current_website_id))]"):forum>/users''',
+ '''/forum/<model("forum.forum"):forum>/users/page/<int:page>'''],
type='http', auth="public", website=True)
def users(self, forum, page=1, **searches):
User = request.env['res.users']
@@ -733,7 +738,7 @@ class WebsiteForum(http.Controller):
# Badges
# --------------------------------------------------
- @http.route('/forum/<model("forum.forum"):forum>/badge', type='http', auth="public", website=True)
+ @http.route('''/forum/<model("forum.forum", "[('website_id', 'in', (False, current_website_id))]"):forum>/badge''', type='http', auth="public", website=True)
def badges(self, forum, **searches):
Badge = request.env['gamification.badge']
badges = Badge.sudo().search([('challenge_ids.category', '=', 'forum')])