diff options
| author | Jeremy Kersten <jke@odoo.com> | 2018-07-25 16:51:50 +0200 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2018-08-13 20:16:34 +0200 |
| commit | 066cfc9598a307a48b86104f4bf861a58de09b41 (patch) | |
| tree | d22a4c1336bc7e639c8afa35c9ffebf01d964475 /addons/website_forum/controllers | |
| parent | 8300155cd6133e0b8496cf4505081a1626e6f0aa (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.py | 17 |
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')]) |
