summaryrefslogtreecommitdiff
path: root/addons/website_event
diff options
context:
space:
mode:
authorJeremy Kersten <jke@odoo.com>2018-08-13 20:36:28 +0200
committerJeremy Kersten <jke@odoo.com>2018-08-13 20:36:28 +0200
commitfbbf24f58acbcd9488cfa8393bd2d4e3a8e4c053 (patch)
tree2994a4151cbc70ac62d1741d84f7758c049557d4 /addons/website_event
parent15df14b9e1863ca09115d920595a6eeb9f6514f1 (diff)
parent853e13800fb030f7ae7180558cb6c3c74b843cd1 (diff)
[MERGE] website: add multi-websites support
Diffstat (limited to 'addons/website_event')
-rw-r--r--addons/website_event/controllers/main.py30
-rw-r--r--addons/website_event/models/event.py13
-rw-r--r--addons/website_event/views/event_views.xml14
3 files changed, 43 insertions, 14 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()
diff --git a/addons/website_event/models/event.py b/addons/website_event/models/event.py
index f82baa95456..ae07f798939 100644
--- a/addons/website_event/models/event.py
+++ b/addons/website_event/models/event.py
@@ -32,9 +32,9 @@ class EventType(models.Model):
class Event(models.Model):
_name = 'event.event'
- _inherit = ['event.event', 'website.seo.metadata', 'website.published.mixin']
+ _inherit = ['event.event', 'website.seo.metadata', 'website.published.multi.mixin']
- website_published = fields.Boolean(track_visibility='onchange')
+ is_published = fields.Boolean(track_visibility='onchange')
is_participating = fields.Boolean("Is Participating", compute="_compute_is_participating")
@@ -45,7 +45,7 @@ class Event(models.Model):
def _compute_is_participating(self):
# we don't allow public user to see participating label
- if self.env.user != self.env.ref('base.public_user'):
+ if self.env.user != self.env['website'].get_current_website().user_id:
email = self.env.user.partner_id.email
for event in self:
domain = ['&', '|', ('email', '=', email), ('partner_id', '=', self.env.user.partner_id.id), ('event_id', '=', event.id)]
@@ -84,7 +84,7 @@ class Event(models.Model):
event.menu_id.unlink()
elif event.website_menu:
if not event.menu_id:
- root_menu = self.env['website.menu'].create({'name': event.name})
+ root_menu = self.env['website.menu'].create({'name': event.name, 'website_id': event.id})
event.menu_id = root_menu
for sequence, (name, url, xml_id) in enumerate(event._get_menu_entries()):
event._create_menu(sequence, name, url, xml_id)
@@ -99,6 +99,7 @@ class Event(models.Model):
'url': url,
'parent_id': self.menu_id.id,
'sequence': sequence,
+ 'website_id': self.id,
})
return menu
@@ -119,9 +120,9 @@ class Event(models.Model):
@api.multi
def _track_subtype(self, init_values):
self.ensure_one()
- if 'website_published' in init_values and self.website_published:
+ if 'is_published' in init_values and self.is_published:
return 'website_event.mt_event_published'
- elif 'website_published' in init_values and not self.website_published:
+ elif 'is_published' in init_values and not self.is_published:
return 'website_event.mt_event_unpublished'
return super(Event, self)._track_subtype(init_values)
diff --git a/addons/website_event/views/event_views.xml b/addons/website_event/views/event_views.xml
index 14339ac30d3..3c533e9e2ec 100644
--- a/addons/website_event/views/event_views.xml
+++ b/addons/website_event/views/event_views.xml
@@ -30,6 +30,9 @@
<field name="model">event.event</field>
<field name="inherit_id" ref="event.view_event_form"/>
<field name="arch" type="xml">
+ <field name="organizer_id" position="before">
+ <field name="website_id" groups="website.group_multi_website"/>
+ </field>
<button name="toggle_active" position="before">
<field name="website_url" invisible="1"/>
<button name="website_publish_button"
@@ -57,4 +60,15 @@
</field>
</record>
+ <record id="event_event_view_list_inherit_website" model="ir.ui.view">
+ <field name="name">event.event.view.list.inherit.website</field>
+ <field name="model">event.event</field>
+ <field name="inherit_id" ref="event.view_event_tree"/>
+ <field name="arch" type="xml">
+ <field name="name" position="after">
+ <field name="website_id" groups="website.group_multi_website"/>
+ </field>
+ </field>
+ </record>
+
</odoo>