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/controllers/main.py | |
| 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/controllers/main.py')
| -rw-r--r-- | addons/website_event/controllers/main.py | 30 |
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() |
