[MERGE] event: improve emails sent by events and fix access rights issues

This commit is contained in:
Thibault Delavallée
2016-08-18 15:33:23 +02:00
8 changed files with 338 additions and 31 deletions
+4 -4
View File
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
{
'name': 'Events Organisation',
'version': '0.1',
'name': 'Events Organization',
'version': '1.0',
'website': 'https://www.odoo.com/page/events',
'category': 'Marketing',
'summary': 'Trainings, Conferences, Meetings, Exhibitions, Registrations',
@@ -9,13 +9,13 @@
Organization and management of Events.
======================================
The event module allows you to efficiently organise events and all related tasks: planification, registration tracking,
The event module allows you to efficiently organize events and all related tasks: planning, registration tracking,
attendances, etc.
Key Features
------------
* Manage your Events and Registrations
* Use emails to automatically confirm and send acknowledgements for any event registration
* Use emails to automatically confirm and send acknowledgments for any event registration
""",
'depends': ['base_setup', 'mail', 'report'],
'data': [
+240 -15
View File
@@ -29,11 +29,123 @@
<field name="reply_to">${object.event_id.reply_to|safe}</field>
<field name="subject">Your registration at ${object.event_id.name}</field>
<field name="body_html"><![CDATA[
<p>Dear ${object.name},</p>
<p>Thank you for your inquiry.</p>
<p>We confirm your registration to the event <b>${object.event_id.name}</b>. You will receive emails with practical information.</p>
<p>If you have any questions, please let us know.</p>
<p>Best regards,</p>]]></field>
% set date_begin = format_tz(object.event_id.date_begin, tz='UTC', format='%Y%m%dT%H%M%SZ')
% set date_end = format_tz(object.event_id.date_end, tz='UTC', format='%Y%m%dT%H%M%SZ')
<div style="background:#F3F5F6;color:#515166;padding:25px 0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;">
<table style="width:600px;margin:5px auto;">
<tbody>
<tr>
<td>
<a href="/">
<img src="/logo" alt="${object.company_id.name}" style="vertical-align:baseline;max-width:100px;" />
</a>
</td>
<td style="text-align:right;vertical-align:middle;">
% if 'website_url' in object.event_id and object.event_id.website_url:
<a href="/event" style="text-decoration:none;color:#717188;">More Events</a>
% endif
</td>
</tr>
</tbody>
</table>
<table style="width:600px;margin:0px auto;background:white;border:1px solid #e1e1e1;">
<tbody>
<tr>
<td style="padding:15px 20px 0px 20px;">
<h2 style="font-weight:300;">
Hi ${object.name}, here is your order confirmation for
% if 'website_url' in object.event_id and object.event_id.website_url:
<a href="${object.event_id.website_url}" style="color:#a24689;text-decoration:none;">${object.event_id.name}</a>
% else:
<strong>${object.event_id.name}</strong>
% endif
</h2>
</td>
</tr>
<tr>
<td style="padding:15px 20px 0px 20px;">
<table style="width:100%;border-top:1px solid #e1e1e1;">
<tr>
<td style="padding:25px 0px;vertical-align:top;">
<img src="/web_editor/font_to_img/61505/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34">
</td>
<td style="padding:30px 10px 25px 10px;width:50%;vertical-align:top;">
% if object.event_id.address_id.street:
<p style="margin:0px 0px 0px 0px;">${object.event_id.address_id.street},</p>
% set location = object.event_id.address_id.street
% endif
% if object.event_id.address_id.street2:
<p style="margin:0px 0px 0px 0px;">${object.event_id.address_id.street2},</p>
% set location = '%s, %s' % (location, object.event_id.address_id.street2)
% endif
% if object.event_id.address_id.city:
${object.event_id.address_id.city},
% set location = '%s, %s' % (location, object.event_id.address_id.city)
% endif
% if object.event_id.address_id.state_id.name:
${object.event_id.address_id.state_id.name},
% set location = '%s, %s' % (location, object.event_id.address_id.state_id.name)
% endif
% if object.event_id.address_id.zip:
${object.event_id.address_id.zip},
% set location = '%s, %s' % (location, object.event_id.address_id.zip)
% endif
% if object.event_id.address_id.country_id.name:
<p style="margin:0px 0px 0px 0px;">${object.event_id.address_id.country_id.name}</p>
% set location = '%s, %s' % (location, object.event_id.address_id.country_id.name)
% endif
</td>
<td style="padding:25px 0px;vertical-align:top;">
<img src="/web_editor/font_to_img/61555/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34">
</td>
<td style="padding:25px 10px 25px 10px;width:50%;line-height:20px;vertical-align:top;">
<div><strong>From</strong> ${object.event_id.date_begin_located}</div>
<div><strong>To</strong> ${object.event_id.date_end_located}</div>
<div style="font-size:12px;color:#9e9e9e"><i><strong>TZ</strong> ${object.event_id.date_tz}</i></div>
</td>
</tr>
</table>
% if object.event_id.organizer_id.email:
<table style="width:100%;border-top:1px solid #e1e1e1;">
<tr>
<td style="padding:10px 0px 25px 0px;">
<h2 style="font-weight:300;margin:10px 0px">Questions about this event?</h2>
<div>Please contact the organizer at <a href="mailto:${object.event_id.organizer_id.email}" style="text-decoration:none;color:#a24689;">${object.event_id.organizer_id.email}</a></div>
</td>
</tr>
</table>
% endif
<table style="width:100%;border-top:1px solid #e1e1e1;">
<tr>
<td style="padding:25px 0px;">
<strong>Add this event to your calendar</strong>
<a href="https://www.google.com/calendar/render?action=TEMPLATE&text=${object.event_id.name}&dates=${date_begin}/${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #a24689;color:#a24689;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(162,70,137)/16" style="vertical-align:middle;" height="16"> Google</a>
<a href="https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&summary=${object.event_id.name}&dtstart=${date_begin}&dtend=${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #a24689;color:#a24689;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(162,70,137)/16" style="vertical-align:middle;" height="16"> Outlook</a>
<a href="https://calendar.yahoo.com/?v=60&view=d&type=20&title=${object.event_id.name}&in_loc=${location}&st=${format_tz(object.event_id.date_begin, tz='UTC', format='%Y%m%dT%H%M%S')}&et=${format_tz(object.event_id.date_end, tz='UTC', format='%Y%m%dT%H%M%S')}" style="padding:3px 5px;border:1px solid #a24689;color:#a24689;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(162,70,137)/16" style="vertical-align:middle;" height="16"> Yahoo</a>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
<div style="width:598px;margin:0px auto;border-left:1px solid #dddddd;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;">
<a href="https://maps.google.com/maps?q=${location}" target="new">
<img src="http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x100&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}" style="vertical-align:bottom;" />
</a>
</div>
<table style="width:600px;margin:0px auto;text-align:center;">
<tbody>
<tr>
<td style="padding-top:10px;font-size: 12px;">
<div>This email was sent to <a href="mailto:${object.email}" style="text-decoration:none;color:#a24689;">${object.email}</a></div>
<p style="margin:0px 0px 9px 0px;padding-top:10px;">Copyright © ${object.company_id.name}</p>
</td>
</tr>
</tbody>
</table>
</div>
]]></field>
</record>
<record id="event_reminder" model="mail.template">
@@ -43,17 +155,130 @@
<field name="email_to" >${object.partner_id.email or object.email|safe}</field>
<field name="lang">${object.partner_id.lang}</field>
<field name="reply_to">${object.event_id.reply_to|safe}</field>
<field name="subject">Reminder of event ${object.event_id.name}</field>
<field name="subject">Reminder for ${object.event_id.name}</field>
<field name="body_html"><![CDATA[
<p>Dear ${object.name},</p>
<p>Thank you for your registration to the event ${object.event_id.name}.</p>
<p>The event will take place at ${object.event_id.address_id.city}
% if object.event_id.address_id.street
, ${object.event_id.address_id.street}
% endif
from ${object.event_id.date_begin_located} to ${object.event_id.date_end_located}.</p>
<p>If you have any questions, please let us know.</p>
<p>Best regards,</p>]]></field>
% set date_begin = format_tz(object.event_id.date_begin, tz='UTC', format='%Y%m%dT%H%M%SZ')
% set date_end = format_tz(object.event_id.date_end, tz='UTC', format='%Y%m%dT%H%M%SZ')
<div style="background:#F3F5F6;color:#515166;padding:25px 0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;">
<table style="width:600px;margin:5px auto;">
<tbody>
<tr>
<td>
<a href="/">
<img src="/logo" alt="${object.company_id.name}" style="vertical-align:baseline;max-width:100px;" />
</a>
</td>
<td style="text-align:right;vertical-align:middle;">
% if 'website_url' in object.event_id and object.event_id.website_url:
<a href="/event" style="text-decoration:none;color:#717188;">More Events</a>
% endif
</td>
</tr>
</tbody>
</table>
<table style="width:600px;margin:0px auto;background:white;border:1px solid #e1e1e1;">
<tbody>
<tr>
<td style="padding:15px 20px 0px 20px;">
<h2 style="font-weight:300;">
Hi ${object.name},
</h2>
<p style="font-size:16px;">
Please keep in mind that the event
% if 'website_url' in object.event_id and object.event_id.website_url:
<a href="${object.event_id.website_url}" style="color:#a24689;text-decoration:none;">${object.event_id.name}</a>
% else:
<strong>${object.event_id.name}</strong>
% endif
takes place on
<strong>${object.get_date_range_str()}</strong>
</p>
</td>
</tr>
<tr>
<td style="padding:15px 20px 0px 20px;">
<table style="width:100%;border-top:1px solid #e1e1e1;">
<tr>
<td style="padding:25px 0px;vertical-align:top;">
<img src="/web_editor/font_to_img/61505/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34">
</td>
<td style="padding:30px 10px 25px 10px;width:50%;vertical-align:top;">
% if object.event_id.address_id.street:
<p style="margin:0px 0px 0px 0px;">${object.event_id.address_id.street},</p>
% set location = object.event_id.address_id.street
% endif
% if object.event_id.address_id.street2:
<p style="margin:0px 0px 0px 0px;">${object.event_id.address_id.street2},</p>
% set location = '%s, %s' % (location, object.event_id.address_id.street2)
% endif
% if object.event_id.address_id.city:
${object.event_id.address_id.city},
% set location = '%s, %s' % (location, object.event_id.address_id.city)
% endif
% if object.event_id.address_id.state_id.name:
${object.event_id.address_id.state_id.name},
% set location = '%s, %s' % (location, object.event_id.address_id.state_id.name)
% endif
% if object.event_id.address_id.zip:
${object.event_id.address_id.zip},
% set location = '%s, %s' % (location, object.event_id.address_id.zip)
% endif
% if object.event_id.address_id.country_id.name:
<p style="margin:0px 0px 0px 0px;">${object.event_id.address_id.country_id.name}</p>
% set location = '%s, %s' % (location, object.event_id.address_id.country_id.name)
% endif
</td>
<td style="padding:25px 0px;vertical-align:top;">
<img src="/web_editor/font_to_img/61555/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34">
</td>
<td style="padding:25px 10px 25px 10px;width:50%;line-height:20px;vertical-align:top;">
<div><strong>From</strong> ${object.event_id.date_begin_located}</div>
<div><strong>To</strong> ${object.event_id.date_end_located}</div>
<div style="font-size:12px;color:#9e9e9e"><i><strong>TZ</strong> ${object.event_id.date_tz}</i></div>
</td>
</tr>
</table>
% if object.event_id.organizer_id.email:
<table style="width:100%;border-top:1px solid #e1e1e1;">
<tr>
<td style="padding:10px 0px 25px 0px;">
<h2 style="font-weight:300;margin:10px 0px">Questions about this event?</h2>
<div>Please contact the organizer at <a href="mailto:${object.event_id.organizer_id.email}" style="text-decoration:none;color:#a24689;">${object.event_id.organizer_id.email}</a></div>
</td>
</tr>
</table>
% endif
<table style="width:100%;border-top:1px solid #e1e1e1;">
<tr>
<td style="padding:25px 0px;">
<strong>Add this event to your calendar</strong>
<a href="https://www.google.com/calendar/render?action=TEMPLATE&text=${object.event_id.name}&dates=${date_begin}/${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #a24689;color:#a24689;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(162,70,137)/16" style="vertical-align:middle;" height="16"> Google</a>
<a href="https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&summary=${object.event_id.name}&dtstart=${date_begin}&dtend=${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #a24689;color:#a24689;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(162,70,137)/16" style="vertical-align:middle;" height="16"> Outlook</a>
<a href="https://calendar.yahoo.com/?v=60&view=d&type=20&title=${object.event_id.name}&in_loc=${location}&st=${format_tz(object.event_id.date_begin, tz='UTC', format='%Y%m%dT%H%M%S')}&et=${format_tz(object.event_id.date_end, tz='UTC', format='%Y%m%dT%H%M%S')}" style="padding:3px 5px;border:1px solid #a24689;color:#a24689;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(162,70,137)/16" style="vertical-align:middle;" height="16"> Yahoo</a>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
<div style="width:598px;margin:0px auto;border-left:1px solid #dddddd;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;">
<a href="https://maps.google.com/maps?q=${location}" target="new">
<img src="http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x100&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}" style="vertical-align:bottom;" />
</a>
</div>
<table style="width:600px;margin:0px auto;text-align:center;">
<tbody>
<tr>
<td style="padding-top:10px;font-size: 12px;">
<div>This email was sent to <a href="mailto:${object.email}" style="text-decoration:none;color:#a24689;">${object.email}</a></div>
<p style="margin:0px 0px 9px 0px;padding-top:10px;">Copyright © ${object.company_id.name}</p>
</td>
</tr>
</tbody>
</table>
</div>
]]></field>
</record>
</data>
+34 -3
View File
@@ -3,6 +3,7 @@
import pytz
from odoo import _, api, fields, models
from odoo.addons.mail.models.mail_template import format_tz
from odoo.exceptions import AccessError, UserError, ValidationError
from odoo.tools.translate import html_translate
@@ -57,6 +58,16 @@ class EventEvent(models.Model):
'interval_unit': 'now',
'interval_type': 'after_sub',
'template_id': self.env.ref('event.event_subscription')
}), (0, 0, {
'interval_nbr': 2,
'interval_unit': 'days',
'interval_type': 'before_event',
'template_id': self.env.ref('event.event_reminder')
}), (0, 0, {
'interval_nbr': 15,
'interval_unit': 'days',
'interval_type': 'before_event',
'template_id': self.env.ref('event.event_reminder')
})]
# Seats and computation
@@ -367,9 +378,9 @@ class EventRegistration(models.Model):
contact_id = self.partner_id.address_get().get('contact', False)
if contact_id:
contact = self.env['res.partner'].browse(contact_id)
self.name = self.name or contact.name
self.email = self.email or contact.email
self.phone = self.phone or contact.phone
self.name = contact.name or self.name
self.email = contact.email or self.email
self.phone = contact.phone or self.phone
@api.multi
def message_get_suggested_recipients(self):
@@ -410,3 +421,23 @@ class EventRegistration(models.Model):
'target': 'new',
'context': ctx,
}
@api.multi
def get_date_range_str(self):
self.ensure_one()
today = fields.Datetime.from_string(fields.Datetime.now())
event_date = fields.Datetime.from_string(self.event_begin_date)
if today.month == event_date.month:
if event_date.day == today.day:
return _('Today')
elif event_date.day - today.day == 1:
return _('Tomorrow')
elif event_date.isocalendar()[1] == today.isocalendar()[1]:
return _('This week')
else:
return _('This month')
elif event_date.month - today.month == 1:
return _('Next month')
else:
return format_tz(self.event_begin_date, tz='UTC', format='%Y%m%dT%H%M%SZ')
+5 -1
View File
@@ -37,4 +37,8 @@ class event_config_settings(models.TransientModel):
@api.multi
def set_default_auto_confirmation(self):
self.env['ir.values'].set_default('event.config.settings', 'auto_confirmation', self.auto_confirmation)
if self.env.user._is_admin() or self.env['res.users'].has_group('event.group_event_manager'):
IrValues = self.env['ir.values'].sudo()
else:
IrValues = self.env['ir.values']
IrValues.set_default('event.config.settings', 'auto_confirmation', self.auto_confirmation)
+5 -4
View File
@@ -1,12 +1,13 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_event_type,event.type,model_event_type,event.group_event_user,1,0,0,0
access_event_type_manager,event.type manager,model_event_type,event.group_event_manager,1,1,1,1
access_event_event,event.event,model_event_event,event.group_event_user,1,1,1,1
access_event_event_portal,event.event.portal,model_event_event,,1,0,0,0
access_event_event_user,event.event.user,model_event_event,event.group_event_user,1,0,0,0
access_event_event_manager,event.event.manager,model_event_event,event.group_event_manager,1,1,1,1
access_event_registration,event.registration,model_event_registration,event.group_event_user,1,1,1,1
access_report_event_registration,report.event.registration,model_report_event_registration,event.group_event_user,1,1,1,1
access_event_event_portal,event.event,model_event_event,,1,0,0,0
access_event_registration_portal,event.registration,model_event_registration,,1,0,0,0
access_event_mail,event.mail,model_event_mail,event.group_event_user,1,0,0,0
access_event_mail_manager,event.mail manager,model_event_mail,event.group_event_manager,1,1,1,1
access_event_mail_registration,event.mail.registration,model_event_mail_registration,event.group_event_user,1,0,0,0
access_event_mail_registration_manager,event.mail.registration.manager,model_event_mail_registration,event.group_event_manager,1,1,1,1
access_event_mail_registration_manager,event.mail.registration.manager,model_event_mail_registration,event.group_event_manager,1,1,1,1
access_report_event_registration,report.event.registration,model_report_event_registration,event.group_event_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_event_type event.type model_event_type event.group_event_user 1 0 0 0
3 access_event_type_manager event.type manager model_event_type event.group_event_manager 1 1 1 1
4 access_event_event access_event_event_portal event.event event.event.portal model_event_event event.group_event_user 1 1 0 1 0 1 0
5 access_event_event_user event.event.user model_event_event event.group_event_user 1 0 0 0
6 access_event_event_manager event.event.manager model_event_event event.group_event_manager 1 1 1 1
7 access_event_registration event.registration model_event_registration event.group_event_user 1 1 1 1
access_report_event_registration report.event.registration model_report_event_registration event.group_event_user 1 1 1 1
access_event_event_portal event.event model_event_event 1 0 0 0
8 access_event_registration_portal event.registration model_event_registration 1 0 0 0
9 access_event_mail event.mail model_event_mail event.group_event_user 1 0 0 0
10 access_event_mail_manager event.mail manager model_event_mail event.group_event_manager 1 1 1 1
11 access_event_mail_registration event.mail.registration model_event_mail_registration event.group_event_user 1 0 0 0
12 access_event_mail_registration_manager event.mail.registration.manager model_event_mail_registration event.group_event_manager 1 1 1 1
13 access_report_event_registration report.event.registration model_report_event_registration event.group_event_user 1 1 1 1
+17 -1
View File
@@ -1,5 +1,8 @@
# -*- coding: utf-8 -*-
from datetime import datetime, timedelta
from odoo import fields
from odoo.tests import common
@@ -18,6 +21,7 @@ class TestEventCommon(common.TransactionCase):
self.group_employee_id = self.env['ir.model.data'].xmlid_to_res_id('base.group_user')
self.group_event_user_id = self.env['ir.model.data'].xmlid_to_res_id('event.group_event_user')
self.group_event_manager_id = self.env['ir.model.data'].xmlid_to_res_id('event.group_event_manager')
group_system = self.env.ref('base.group_system')
# Test users to use through the various tests
self.user_eventuser = self.Users.with_context({'no_reset_password': True}).create({
@@ -34,5 +38,17 @@ class TestEventCommon(common.TransactionCase):
'alias_name': 'bastien',
'email': 'bastien.eventmanager@example.com',
'tz': 'Europe/Brussels',
'groups_id': [(6, 0, [self.group_employee_id, self.group_event_manager_id])]
'groups_id': [(6, 0, [
self.group_employee_id,
self.group_event_manager_id,
group_system.id])]
})
self.event_0 = self.env['event.event'].create({
'name': 'TestEvent',
'date_begin': fields.Datetime.to_string(datetime.today() + timedelta(days=1)),
'date_end': fields.Datetime.to_string(datetime.today() + timedelta(days=15)),
'registration_ids': [(0, 0, {
'partner_id': self.user_eventuser.partner_id.id,
})]
})
+33 -2
View File
@@ -4,7 +4,7 @@ import datetime
from dateutil.relativedelta import relativedelta
from odoo.addons.event.tests.common import TestEventCommon
from odoo.exceptions import ValidationError, UserError
from odoo.exceptions import ValidationError, UserError, AccessError
from odoo.tools import mute_logger
@@ -13,7 +13,10 @@ class TestEventFlow(TestEventCommon):
@mute_logger('openerp.addons.base.ir.ir_model', 'openerp.models')
def test_00_basic_event_auto_confirm(self):
""" Basic event management with auto confirmation """
self.env['ir.values'].set_default('event.config.settings', 'auto_confirmation', True)
event_config = self.env['event.config.settings'].sudo(self.user_eventmanager).create({
'auto_confirmation': 1
})
event_config.execute()
# EventUser creates a new event: ok
test_event = self.Event.sudo(self.user_eventmanager).create({
@@ -87,3 +90,31 @@ class TestEventFlow(TestEventCommon):
self.assertEqual(
test_reg1.state, 'draft',
'Event: new registration should not be confirmed with auto_confirmation parameter being False')
def test_event_access_rights(self):
# EventManager required to create or update events
with self.assertRaises(AccessError):
self.Event.sudo(self.user_eventuser).create({
'name': 'TestEvent',
'date_begin': datetime.datetime.now() + relativedelta(days=-1),
'date_end': datetime.datetime.now() + relativedelta(days=1),
'seats_max': 10,
})
with self.assertRaises(AccessError):
self.event_0.sudo(self.user_eventuser).write({
'name': 'TestEvent Modified',
})
# Settings access rights required to enable some features
self.user_eventmanager.write({'groups_id': [
(3, self.env.ref('base.group_system').id),
(4, self.env.ref('base.group_erp_manager').id)
]})
with self.assertRaises(AccessError):
event_config = self.env['event.config.settings'].sudo(self.user_eventmanager).create({
'auto_confirmation': 1
})
event_config.execute()
def test_event_data(self):
self.assertEqual(self.event_0.registration_ids.get_date_range_str(), u'Tomorrow')
-1
View File
@@ -7,7 +7,6 @@ from odoo.addons.website.models.website import slug
class Event(models.Model):
_name = 'event.event'
_inherit = ['event.event', 'website.seo.metadata', 'website.published.mixin']