summaryrefslogtreecommitdiff
path: root/addons/website_event/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/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/controllers')
-rw-r--r--addons/website_event/controllers/main.py30
1 files changed, 22 insertions, 8 deletions
diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py
index e50623b53fc..33e51724613 100644
--- a/addons/website_event/controllers/main.py
+++ b/addons/website_event/controllers/main.py
@@ -28,7 +28,6 @@ class WebsiteEventController(http.Controller):
searches.setdefault('type', 'all')
searches.setdefault('country', 'all')
- domain_search = {}
def sdn(date):
return fields.Datetime.to_string(date.replace(hour=23, minute=59, second=59))
@@ -64,6 +63,7 @@ class WebsiteEventController(http.Controller):
]
# search domains
+ domain_search = {'website_specific': request.website.website_domain()}
current_date = None
current_type = None
current_country = None
@@ -141,8 +141,11 @@ class WebsiteEventController(http.Controller):
return request.render("website_event.index", values)
- @http.route(['/event/<model("event.event"):event>/page/<path:page>'], type='http', auth="public", website=True, sitemap=False)
+ @http.route(['''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>/page/<path:page>'''], type='http', auth="public", website=True, sitemap=False)
def event_page(self, event, page, **post):
+ if not event.can_access_from_current_website():
+ raise werkzeug.exceptions.NotFound()
+
values = {
'event': event,
'main_object': event
@@ -161,8 +164,11 @@ class WebsiteEventController(http.Controller):
return request.render(page, values)
- @http.route(['/event/<model("event.event"):event>'], type='http', auth="public", website=True)
+ @http.route(['''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>'''], type='http', auth="public", website=True)
def event(self, event, **post):
+ if not event.can_access_from_current_website():
+ raise werkzeug.exceptions.NotFound()
+
if event.menu_id and event.menu_id.child_id:
target_url = event.menu_id.child_id[0].url
else:
@@ -171,8 +177,11 @@ class WebsiteEventController(http.Controller):
target_url += '?enable_editor=1'
return request.redirect(target_url)
- @http.route(['/event/<model("event.event"):event>/register'], type='http', auth="public", website=True, sitemap=False)
+ @http.route(['''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>/register'''], type='http', auth="public", website=True, sitemap=False)
def event_register(self, event, **post):
+ if not event.can_access_from_current_website():
+ raise werkzeug.exceptions.NotFound()
+
values = {
'event': event,
'main_object': event,
@@ -195,6 +204,7 @@ class WebsiteEventController(http.Controller):
'date_begin': fields.Date.to_string(date_begin),
'date_end': fields.Date.to_string((date_begin + timedelta(days=(1)))),
'seats_available': 1000,
+ 'website_id': request.website.id,
}
return request.env['event.event'].with_context(context or {}).create(vals)
@@ -210,11 +220,12 @@ class WebsiteEventController(http.Controller):
country_code = request.session['geoip'].get('country_code')
result = {'events': [], 'country': False}
events = None
+ domain = request.website.website_domain()
if country_code:
country = request.env['res.country'].search([('code', '=', country_code)], limit=1)
- events = Event.search(['|', ('address_id', '=', None), ('country_id.code', '=', country_code), ('date_begin', '>=', '%s 00:00:00' % fields.Date.today()), ('state', '=', 'confirm')], order="date_begin")
+ events = Event.search(domain + ['|', ('address_id', '=', None), ('country_id.code', '=', country_code), ('date_begin', '>=', '%s 00:00:00' % fields.Date.today()), ('state', '=', 'confirm')], order="date_begin")
if not events:
- events = Event.search([('date_begin', '>=', '%s 00:00:00' % fields.Date.today()), ('state', '=', 'confirm')], order="date_begin")
+ events = Event.search(domain + [('date_begin', '>=', '%s 00:00:00' % fields.Date.today()), ('state', '=', 'confirm')], order="date_begin")
for event in events:
if country_code and event.country_id.code == country_code:
result['country'] = country
@@ -252,8 +263,11 @@ class WebsiteEventController(http.Controller):
registration[key] = value
return list(registrations.values())
- @http.route(['/event/<model("event.event"):event>/registration/confirm'], type='http', auth="public", methods=['POST'], website=True)
+ @http.route(['''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>/registration/confirm'''], type='http', auth="public", methods=['POST'], website=True)
def registration_confirm(self, event, **post):
+ if not event.can_access_from_current_website():
+ raise werkzeug.exceptions.NotFound()
+
Attendees = request.env['event.registration']
registrations = self._process_registration_details(post)
@@ -270,7 +284,7 @@ class WebsiteEventController(http.Controller):
'iCal_url': urls.get('iCal_url')
})
- @http.route(['/event/<model("event.event"):event>/ics'], type='http', auth="public", website=True)
+ @http.route(['''/event/<model("event.event", "[('website_id', 'in', (False, current_website_id))]"):event>/ics'''], type='http', auth="public", website=True)
def make_event_ics_file(self, event, **kwargs):
if not event or not event.registration_ids:
return request.not_found()