+
+
+
event.form.inheritevent.event
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/event_sale/wizard/event_edit_registration.py b/addons/event_sale/wizard/event_edit_registration.py
index 0ae579bc693..f03623d91ad 100644
--- a/addons/event_sale/wizard/event_edit_registration.py
+++ b/addons/event_sale/wizard/event_edit_registration.py
@@ -55,7 +55,7 @@ class RegistrationEditor(models.TransientModel):
self.env['event.registration'].create(values)
if self.env.context.get('active_model') == 'sale.order':
for order in self.env['sale.order'].browse(self.env.context.get('active_ids', [])):
- order.order_line._update_registrations(confirm=True)
+ order.order_line._update_registrations(confirm=False)
return {'type': 'ir.actions.act_window_close'}
diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py
index 06918b75551..54921dbb88c 100644
--- a/addons/mail/models/mail_thread.py
+++ b/addons/mail/models/mail_thread.py
@@ -734,6 +734,8 @@ class MailThread(models.AbstractModel):
recipient_ids.add(record.partner_id.id)
elif 'email_from' in self._fields and record.email_from:
email_to = record.email_from
+ elif 'partner_email' in self._fields and record.partner_email:
+ email_to = record.partner_email
elif 'email' in self._fields:
email_to = record.email
res[record.id] = {'partner_ids': list(recipient_ids), 'email_to': email_to, 'email_cc': email_cc}
diff --git a/addons/website_event/README.md b/addons/website_event/README.md
index 862c44a685c..e4691d2619b 100644
--- a/addons/website_event/README.md
+++ b/addons/website_event/README.md
@@ -10,7 +10,7 @@ Create Awesome Event Pages
### Get rid of old WYSIWYG editors
-Create beautiful event pages by drag & droping well designed *'Building Blocks'*. Publish event photos, speakers, agenda, etc.
+Create beautiful event pages by drag & droping well designed *'Building Blocks'*. Publish event photos, speakers, schedule, etc.
Odoo's unique *'edit inline'* approach makes website creation surprisingly easy. "Want to introduce a speaker? to change the price of a ticket? to update a banner? promote sponsors?" just click and change.
diff --git a/addons/website_event/__manifest__.py b/addons/website_event/__manifest__.py
index 13d42d483be..6811d586e16 100644
--- a/addons/website_event/__manifest__.py
+++ b/addons/website_event/__manifest__.py
@@ -4,22 +4,22 @@
'name': 'Online Events',
'category': 'Marketing',
'sequence': 135,
- 'summary': 'Schedule, Promote and Sell Events',
+ 'summary': 'Publish Events and Manage Online Registrations on your Website',
'website': 'https://www.odoo.com/page/website-builder',
'description': """
Online Events
""",
'depends': ['website', 'website_partner', 'website_mail', 'event'],
'data': [
- 'data/website_event_data.xml',
+ 'data/event_data.xml',
'views/event_config_settings_views.xml',
- 'views/website_event_templates.xml',
- 'views/website_event_views.xml',
+ 'views/event_templates.xml',
+ 'views/event_views.xml',
'security/ir.model.access.csv',
- 'security/website_event_security.xml',
+ 'security/event_security.xml',
],
'demo': [
- 'data/website_event_demo.xml'
+ 'data/event_demo.xml'
],
'application': True,
}
diff --git a/addons/website_event/data/website_event_data.xml b/addons/website_event/data/event_data.xml
similarity index 100%
rename from addons/website_event/data/website_event_data.xml
rename to addons/website_event/data/event_data.xml
diff --git a/addons/website_event/data/website_event_demo.xml b/addons/website_event/data/event_demo.xml
similarity index 100%
rename from addons/website_event/data/website_event_demo.xml
rename to addons/website_event/data/event_demo.xml
diff --git a/addons/website_event/models/event.py b/addons/website_event/models/event.py
index 6c1e1ddf809..640eb9a3121 100644
--- a/addons/website_event/models/event.py
+++ b/addons/website_event/models/event.py
@@ -6,14 +6,18 @@ from odoo import api, fields, models, _
from odoo.addons.website.models.website import slug
+class EventType(models.Model):
+ _name = 'event.type'
+ _inherit = ['event.type']
+
+ website_menu = fields.Boolean(
+ 'Display a dedicated menu on Website')
+
+
class Event(models.Model):
_name = 'event.event'
_inherit = ['event.event', 'website.seo.metadata', 'website.published.mixin']
- def _default_hashtag(self):
- return re.sub("[- \\.\\(\\)\\@\\#\\&]+", "", self.env.user.company_id.name).lower()
-
- twitter_hashtag = fields.Char('Twitter Hashtag', default=_default_hashtag)
website_published = fields.Boolean(track_visibility='onchange')
website_message_ids = fields.One2many(
'mail.message', 'res_id',
@@ -25,9 +29,10 @@ class Event(models.Model):
)
is_participating = fields.Boolean("Is Participating", compute="_compute_is_participating")
- show_menu = fields.Boolean('Dedicated Menu', compute='_get_show_menu', inverse='_set_show_menu',
- help="Creates menus Introduction, Location and Register on the page "
- " of the event on the website.", store=True)
+ website_menu = fields.Boolean(
+ 'Dedicated Menu', compute='_compute_website_menu', inverse='_set_website_menu',
+ help="Creates menus Introduction, Location and Register on the page "
+ " of the event on the website.", store=True)
menu_id = fields.Many2one('website.menu', 'Event Menu')
def _compute_is_participating(self):
@@ -46,46 +51,47 @@ class Event(models.Model):
if event.id: # avoid to perform a slug on a not yet saved record in case of an onchange.
event.website_url = '/event/%s' % slug(event)
- @api.multi
- def _get_new_menu_pages(self):
- """ Retuns a list of tuple ('Page name', 'relative page url') for the event """
+ @api.onchange('event_type_id')
+ def _onchange_type(self):
+ super(Event, self)._onchange_type()
+ if self.event_type_id:
+ self.website_menu = self.event_type_id.website_menu
+
+ def _get_menu_entries(self):
self.ensure_one()
- todo = [
- (_('Introduction'), 'website_event.template_intro'),
- (_('Location'), 'website_event.template_location')
+ return [
+ (_('Introduction'), False, 'website_event.template_intro'),
+ (_('Location'), False, 'website_event.template_location'),
+ (_('Register'), '/event/%s/register' % slug(self), False),
]
- result = []
- for name, path in todo:
- complete_name = name + ' ' + self.name
- newpath = self.env['website'].new_page(complete_name, path, ispage=False)
- url = "/event/" + slug(self) + "/page/" + newpath
- result.append((name, url))
- result.append((_('Register'), '/event/%s/register' % slug(self)))
- return result
@api.multi
- def _set_show_menu(self):
+ def _set_website_menu(self):
for event in self:
- if event.menu_id and not event.show_menu:
+ if event.menu_id and not event.website_menu:
event.menu_id.unlink()
- elif event.show_menu and not event.menu_id:
- root_menu = self.env['website.menu'].create({'name': event.name})
- to_create_menus = event._get_new_menu_pages()
- seq = 0
- for name, url in to_create_menus:
- self.env['website.menu'].create({
- 'name': name,
- 'url': url,
- 'parent_id': root_menu.id,
- 'sequence': seq,
- })
- seq += 1
- event.menu_id = root_menu
+ elif event.website_menu:
+ if not event.menu_id:
+ root_menu = self.env['website.menu'].create({'name': event.name})
+ event.menu_id = root_menu
+
+ for sequence, (name, url, xml_id) in enumerate(self._get_menu_entries()):
+ existing_pages = event.menu_id.child_id.mapped('name')
+ if name not in existing_pages:
+ if not url:
+ newpath = self.env['website'].new_page(name + ' ' + self.name, xml_id, ispage=False)
+ url = "/event/" + slug(self) + "/page/" + newpath
+ self.env['website.menu'].create({
+ 'name': name,
+ 'url': url,
+ 'parent_id': event.menu_id.id,
+ 'sequence': sequence,
+ })
@api.multi
- def _get_show_menu(self):
+ def _compute_website_menu(self):
for event in self:
- event.show_menu = bool(event.menu_id)
+ event.website_menu = bool(event.menu_id)
@api.multi
def google_map_img(self, zoom=8, width=298, height=298):
diff --git a/addons/website_event/security/website_event_security.xml b/addons/website_event/security/event_security.xml
similarity index 100%
rename from addons/website_event/security/website_event_security.xml
rename to addons/website_event/security/event_security.xml
diff --git a/addons/website_event/static/description/index.html b/addons/website_event/static/description/index.html
index 8ef92f0377c..5648a814172 100644
--- a/addons/website_event/static/description/index.html
+++ b/addons/website_event/static/description/index.html
@@ -1,7 +1,7 @@
Create your own events
-
Organize, publish, promote and sell.
+
Organize, publish and promote.
@@ -15,7 +15,7 @@
Host events that resonates with your audience
Easily create live or online events
- One platform to manage it all. Odoo Events covers all aspects of an event manager's work: organization, visibility, promotion and sale. Use it with any kind of event, including conferences, meetings, seminars, training and webinars.
+ One platform to manage it all. Odoo Events covers all aspects of an event manager's work: organization, visibility, promotion. Use it with any kind of event, including conferences, meetings, seminars, training and webinars.
@@ -51,7 +51,7 @@
-
Automatically display your event's agenda in a clear, classy design on your website.
+
Automatically display your event's schedule in a clear, classy design on your website.
@@ -69,9 +69,9 @@
Get sponsors to come to you
-
Sell sponsorship, promote your sponsors
+
Promote your sponsors
- Easily manage existing and new sponsors with Odoo Events. Add sponsors to your events and publish sponsors per level (e.g., gold) on the bottom of every page of the event. Sell sponsorship packages online through Odoo eCommerce.
+ Easily manage existing and new sponsors with Odoo Events. Add sponsors to your events and publish sponsors per level (e.g., gold) on the bottom of every page of the event.
@@ -83,22 +83,16 @@
-
+
+
Total promotion tools
+
Promote events efficiently on all channels
-
-
Total promotion tools
-
Promote events efficiently on all channels
-
- Segment your audience, leverage social media and email marketing to promote your events to the right audience. Odoo Events' smooth integration with countless Odoo apps simplifies promotion to the extreme. Setup automated campaigns for attendees, or automatically send timely emails to registrants. Optimize conversions with ad-hoc landing pages for your different marketing campaigns.
-
+
-
-
Sell tickets online
-
Automate the registration and payment process
- Manage registrations and sell tickets online to your events. Choose whether it is a free event or whether attendees need to register for a fee. Pick the paying method -pay online with a credit card or with the invoice. Define special conditions such as early-bird prices, member benefits or extra services with multiple tickets. All you need to boost your event attendance.
+ Segment your audience, leverage social media and email marketing to promote your events to the right audience. Odoo Events' smooth integration with countless Odoo apps simplifies promotion to the extreme. Setup automated campaigns for attendees, or automatically send timely emails to registrants. Optimize conversions with ad-hoc landing pages for your different marketing campaigns.
+ Ayaan has in the IT sector since 20 years. He
+ develops software to help develop websites. He sold his
+ first company at 30 years old and manage to grow OpenCorp
+ from 1 to 55 employees mostly by reselling services on
+ Odoo.
+
+ Ayaan is the author of several books, including Amazon best seller
+ "How Odoo will change the business world!".
+
+
+
+
+
+ Le Foyer du lac
+
+
+ Theatre
+
+
+ Lauzelle
+
+
+ Foyer Royal
+
+
+ Biereau
+
+
+ Bruyère
+
+
+ How to develop a website module.
+
+
+
+
+
+
+ 3
+
+ blocked
+
+
+ How to integrate hardware materials with the Odoo point of sale.
+
+
+
+
+
+
+
+ done
+
+
+ How to develop real time apps, the website live chat module explained.
+
+
+
+
+
+
+
+
+
+ How to develop automated tests in the Odoo web client.
+
+
+
+
+
+
+
+
+
+ The new way to promote your modules in the Apps platform and Odoo website.
+
+
+
+
+
+
+
+
+
+ Detailed roadmap of accounting new modules and improvements for version 8.
+
+
+
+
+
+
+
+
+
+ A technical explanation of Odoo as a CMS and a eCommerce platform for version 8.
+
+
+
+
+
+
+
+
+
+ Discover Odoo CRM: How to optimize your sales, from leads to sales orders.
+
+
+
+
+
+ 2
+
+
+ blocked
+
+
+ How to use Odoo for your HR process: recruitment, leaves management, appraisals, expenses, etc.
+
+
+
+
+
+
+ 2
+
+
+
+
+ Raising qualitive insights with the survey app
+
+
+
+
+
+ 5
+
+
+
+ Discover Odoo Point-of-Sale: Your shop ready to use in 30 minutes.
+
+
+
+
+
+
+
+
+
+ Manage your events with Odoo, the new training modules.
+
+
+
+
+
+
+
+
+
+ Advanced reporting with Google Spreadsheets integration.
+
+
+
+
+
+
+
+
+
+ New Paypal modules (portal, handling, installments).
+
+
+
+
+
+
+
+
+
+ Odoo Mobile for Notes, Meetings and Messages.
+
+
+
+
+
+
+
+
+
+ Odoo as your Enterprise Social Network.
+
+
+
+
+
+
+
+
+
+ The Art of Making an Odoo Demo.
+
+
+
+
+
+
+
+
+
+ How to build your marketing strategy for the purpose of generating leads with Odoo.
+
+
+
+
+
+ 5
+
+
+
+
+ Advanced lead management with Odoo: tips and tricks from the fields
+
+
+
+
+
+ 5
+
+
+
+
+ New Certification Program (valid from Oct. 2013).
+
+
+
+
+
+
+
+
+
+ Recruiting high skilled talents with Odoo HR apps
+
+
+
+
+
+ 7
+
+
+
+ Manage your KPIs (recomended to openERP partners).
+
+
+
+
+
+
+
+
+
+ Key Success factors selling Odoo.
+
+
+
+
+
+
+
+
+
+ Merge proposals review, code sprint (entire day).
+
+
+
+
+
+
+
+
+
+ Merge proposals review, code sprint (entire afternoon)
+
+
+
+
+
+
+
+
+
+ Odoo in 2014
+
+
+
+
+
+
+ 3
+
+
+ Odoo Status & Strategy 2014
+
+
+
+
+
+
+
+
+ The new marketing strategy.
+
+
+
+
+
+
+ 6
+
+
+ Morning break
+
+
+
+
+
+
+
+ Lunch
+
+
+
+
+
+
-
-
- http://facebook.com/odoo
-
-
- Ayaan has in the IT sector since 20 years. He
- develops software to help develop websites. He sold his
- first company at 30 years old and manage to grow OpenCorp
- from 1 to 55 employees mostly by reselling services on
- Odoo.
-
- Ayaan is the author of several books, including Amazon best seller
- "How Odoo will change the business world!".
-
- Tracks define the agenda of your event. These can bea talk, a round table, a meeting, etc.
+ Tracks define the schedule of your event. These can bea talk, a round table, a meeting, etc.
- Tracks define the agenda of your event. These can be a talk, a round table, a meeting, etc.
+ Tracks define the schedule of your event. These can be a talk, a round table, a meeting, etc.
+ Define the steps that will be used in the event from the
+ creation of the track, up to the closing of the track.
+ You will use these stages in order to track the progress in
+ solving an event track.
+