summaryrefslogtreecommitdiff
path: root/addons/website_event/controllers/main.py
diff options
context:
space:
mode:
authorJeremy Kersten <jke@odoo.com>2016-01-08 23:16:25 +0100
committerJeremy Kersten <jke@odoo.com>2016-01-08 23:19:29 +0100
commitce3f7970686c5658c3fd72a67d5ee06ce61849d1 (patch)
tree489725d52bed27e8acc21f1693c5ff8543d4e8c5 /addons/website_event/controllers/main.py
parent2afadfe444ec52acec5d7890cda5ae6817604999 (diff)
[FIX] website_event: avoid traceback when page doesn't exists
The controller /event/<event_id>/page/<page> raise exception if page is not existing. Allow to pass the template reference when user are creating a new page. Without it, it is impossible for the end user to create a website_event page without change manually the xml id because the xml id is based on the module from the template. This fix is retro compatible, because from_template will be ignored until next update of website. And during update from website, website_event will be updated because it's a dependance and so the default_page template created.
Diffstat (limited to 'addons/website_event/controllers/main.py')
-rw-r--r--addons/website_event/controllers/main.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py
index a97acb0fb4c..6bf3801a961 100644
--- a/addons/website_event/controllers/main.py
+++ b/addons/website_event/controllers/main.py
@@ -2,6 +2,7 @@
import babel.dates
import time
+import re
import werkzeug.urls
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
@@ -162,6 +163,14 @@ class website_event(http.Controller):
if '.' not in page:
page = 'website_event.%s' % page
+ try:
+ request.website.get_template(page)
+ except ValueError:
+ # page not found
+ values['path'] = re.sub(r"^website_event\.", '', page)
+ values['from_template'] = 'website_event.default_page' # .strip('website_event.')
+ page = 'website.page_404'
+
return request.website.render(page, values)
@http.route(['/event/<model("event.event"):event>'], type='http', auth="public", website=True)