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_event_track/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_event_track/controllers')
| -rw-r--r-- | addons/website_event_track/controllers/main.py | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/addons/website_event_track/controllers/main.py b/addons/website_event_track/controllers/main.py index ec7d6b806df..48447342976 100644 --- a/addons/website_event_track/controllers/main.py +++ b/addons/website_event_track/controllers/main.py @@ -5,6 +5,7 @@ import babel import collections import datetime import pytz +from werkzeug.exceptions import NotFound from odoo import fields, http from odoo.http import request @@ -13,8 +14,11 @@ from odoo.tools import html_escape as escape, html2plaintext class WebsiteEventTrackController(http.Controller): - @http.route(['''/event/<model("event.event"):event>/track/<model("event.track", "[('event_id','=',event[0])]"):track>'''], type='http', auth="public", website=True) + @http.route(['''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>/track/<model("event.track", "[('event_id','=',event[0])]"):track>'''], type='http', auth="public", website=True) def event_track_view(self, event, track, **post): + if not event.can_access_from_current_website(): + raise NotFound() + track = track.sudo().with_context(tz=event.date_tz or 'UTC') values = {'track': track, 'event': track.event_id, 'main_object': track} return request.render("website_event_track.track_view", values) @@ -65,8 +69,11 @@ class WebsiteEventTrackController(http.Controller): 'dates': dates } - @http.route(['''/event/<model("event.event"):event>/agenda'''], type='http', auth="public", website=True, sitemap=False) + @http.route(['''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>/agenda'''], type='http', auth="public", website=True, sitemap=False) def event_agenda(self, event, tag=None, **post): + if not event.can_access_from_current_website(): + raise NotFound() + event = event.with_context(tz=event.date_tz or 'UTC') local_tz = pytz.timezone(event.date_tz or 'UTC') days_tracks = collections.defaultdict(lambda: []) @@ -90,10 +97,13 @@ class WebsiteEventTrackController(http.Controller): }) @http.route([ - '''/event/<model("event.event"):event>/track''', - '''/event/<model("event.event"):event>/track/tag/<model("event.track.tag"):tag>''' + '''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>/track''', + '''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>/track/tag/<model("event.track.tag"):tag>''' ], type='http', auth="public", website=True, sitemap=False) def event_tracks(self, event, tag=None, **post): + if not event.can_access_from_current_website(): + raise NotFound() + event = event.with_context(tz=event.date_tz or 'UTC') searches = {} if tag: @@ -112,12 +122,18 @@ class WebsiteEventTrackController(http.Controller): } return request.render("website_event_track.tracks", values) - @http.route(['''/event/<model("event.event"):event>/track_proposal'''], type='http', auth="public", website=True, sitemap=False) + @http.route(['''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>/track_proposal'''], type='http', auth="public", website=True, sitemap=False) def event_track_proposal(self, event, **post): + if not event.can_access_from_current_website(): + raise NotFound() + return request.render("website_event_track.event_track_proposal", {'event': event}) - @http.route(['/event/<model("event.event"):event>/track_proposal/post'], type='http', auth="public", methods=['POST'], website=True) + @http.route(['''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>/track_proposal/post'''], type='http', auth="public", methods=['POST'], website=True) def event_track_proposal_post(self, event, **post): + if not event.can_access_from_current_website(): + raise NotFound() + tags = [] for tag in event.allowed_track_tag_ids: if post.get('tag_' + str(tag.id)): |
