summaryrefslogtreecommitdiff
path: root/addons/website_event_track/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_event_track/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_event_track/controllers')
-rw-r--r--addons/website_event_track/controllers/main.py28
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)):