Repository
odoo/odoo · module folder
Module version
1.4
Category
Marketing/Events
Folder size
6.28 MB
License
LGPL-3
Application
Yes
Auto-installable
No
Website
https://www.odoo.com/app/events
Last tracking update
2026-08-15 22:44:18
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Xavier ALT, Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Nicolas Martinelli, Nicolas Lempereur, Géry Debongnie, qsm-odoo, Christophe Monniez, Julien Castiaux, Aurélien Warnon, Andrea Grazioso (agr-odoo), Julien Mougenot, Rémy Voet (ryv), Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, Benjamin Vray, Benoit Socias, Florian Charlier, Nicolas Bayet, Hubert Van De Walle, Renaud Thiry, Julien Banken, Louis Wicket (wil), alsh-odoo, Victor Piryns (pivi), amdi-odoo, Levi Siuzdak (sile), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Mayurrajsinh Rathod, CarmenMiranda, Mehdi Outagant (MOU), Serge Bayet (seba), Jérémy Hennecart (jeh), Julien Carion (juca), kcv-odoo, adsh-odoo, nihp-odoo, Chrysanthe (chgo), Sanjay Sharma, mano-odoo, Shaan Thakkar (THSH), yagp-odoo, Pierre Pulinckx (PIPU), Sébastien (blse), panv-odoo, sben-odoo, Pierre Pulinckx, Anton Romanova (roan), Bastien PIERRE, MaximeNoirhomme, Vincent Sevestre, Krzysztof Magusiak (krma), Omar (OSAH), Ajit Singh, Guillaume V, Brett Cutler, bikh-odoo, Alice Gaudon, Augustin (duau), Alessandro Lupo, Yagnik ✗ (yagp), assh-odoo, pdso-odoo, alan-odoo, Farah (ahmfa), chpa-odoo, panj-odoo, Romain ROSANO (rros)
Odoo dependencies
Python dependencies
geoip2
System dependencies
None
Required by
website_event_booth, website_event_crm, website_event_exhibitor, website_event_filter_city, website_event_membership_restriction, website_event_questions_by_ticket, website_event_require_legal, website_event_sale, website_event_track
Description

Code Analysis

Views touched (89)
XML IDNameModelTypeStatus
display_timer_alert_widget Display Countdown widget ir.ui.view qweb New
display_timer_widget Display Timer Widget ir.ui.view qweb New
dynamic_filter_template_event_event_card Card Layout ir.ui.view qweb New
dynamic_filter_template_event_event_picture Picture Layout ir.ui.view qweb New
dynamic_filter_template_event_event_single_aside Solo Aside ir.ui.view qweb New
dynamic_filter_template_event_event_single_badge Solo Badge ir.ui.view qweb New
dynamic_filter_template_event_event_single_card Solo Card ir.ui.view qweb New
dynamic_filter_template_event_event_single_entry Solo Entry ir.ui.view qweb New
dynamic_filter_template_event_event_single_offset Solo Offset ir.ui.view qweb New
event_calendar_links event_calendar_links ir.ui.view qweb New
event_confirmation_end_page_hook event_confirmation_end_page_hook ir.ui.view qweb New
event_description_dates Event Description Dates ir.ui.view qweb New
event_description_full Event Description ir.ui.view qweb New
event_details Event Header ir.ui.view qweb New
event_event_view_form event.event.view.form.inherit.website event.event form Inherits event.view_event_form
event_event_view_form_website_create event.event.form.website_create event.event form Inherits event.view_event_form
event_event_view_list event.event.view.list.inherit.website event.event list Inherits event.view_event_tree
event_event_view_search event.event.search.inherit.website event.event search Inherits event.view_event_search
event_location Filter by Country ir.ui.view qweb Inherits website_event.index_topbar
event_pages_kanban_view Event Pages Kanban event.event kanban Inherits event.view_event_kanban
event_pages_tree_view Event Pages List event.event tree Inherits event.view_event_tree
event_registration_view_form event.registration.view.form.inherit.online event.registration form Inherits event.view_event_registration_form
event_registration_view_kanban event.registration.kanban.inherit.online event.registration kanban Inherits event.event_registration_view_kanban
event_registration_view_search event.registration.view.search.inherit.online event.registration search Inherits event.view_registration_search
event_registration_view_tree event.registration.view.list.inherit.online event.registration list Inherits event.view_event_registration_tree
event_tag_category_view_form event.tag.category.view.form.inherit.website event.tag.category form Inherits event.event_tag_category_view_form
event_tag_category_view_tree event.tag.category.view.list.inherit.website event.tag.category list Inherits event.event_tag_category_view_tree
event_tag_view_form_inherit event.tag.view.form.inherit event.tag form Inherits event.event_tag_view_form
event_time Filter by Date ir.ui.view qweb Inherits website_event.index_topbar
event_type_view_form event.type.view.form.inherit.website event.type form Inherits event.view_event_type_form
events_list Events list ir.ui.view qweb New
index Events ir.ui.view qweb New
index_sidebar Sidebar ir.ui.view qweb New
index_sidebar_about_us About us ir.ui.view qweb Inherits website_event.index_sidebar
index_sidebar_follow_us Follow us ir.ui.view qweb Inherits website_event.index_sidebar
index_sidebar_photos Photos ir.ui.view qweb Inherits website_event.index_sidebar
index_sidebar_quotes Quotes ir.ui.view qweb Inherits website_event.index_sidebar
index_topbar Topbar ir.ui.view qweb New
layout Event ir.ui.view qweb New
modal_slot_registration Modal for slots registration ir.ui.view qweb New
modal_ticket_registration Modal for tickets registration ir.ui.view qweb New
navbar Event Navbar ir.ui.view qweb New
navbar_dropdown Event Navbar Dropdown ir.ui.view qweb New
opt_event_calendar_block Calendar links ir.ui.view qweb Inherits website_event.event_description_full
opt_event_dates_block Dates ir.ui.view qweb Inherits website_event.event_description_full
opt_event_description_cover_hidden Event Description Cover Hidden Option ir.ui.view qweb Inherits website_event.event_description_full
opt_event_description_cover_top Event Description Cover Top Option ir.ui.view qweb Inherits website_event.event_description_full
opt_event_fixed_sidebar Fixed Sidebar Option ir.ui.view qweb Inherits website_event.event_description_full
opt_event_location_block Location ir.ui.view qweb Inherits website_event.event_description_full
opt_event_organizer_block Organizer ir.ui.view qweb Inherits website_event.event_description_full
opt_event_registration_block Registrations ir.ui.view qweb Inherits website_event.event_description_full
opt_event_share_block Share ir.ui.view qweb Inherits website_event.event_description_full
opt_events_list_cards 'Cards' Design ir.ui.view qweb Inherits website_event.events_list
opt_events_list_categories Show Templates ir.ui.view qweb Inherits website_event.events_list
opt_events_list_columns Layout • Columns ir.ui.view qweb Inherits website_event.events_list
opt_index_sidebar Show Sidebar ir.ui.view qweb Inherits website_event.index
registration_attendee_details Registration Attendee Details ir.ui.view qweb New
registration_complete Registration Completed ir.ui.view qweb New
registration_configure_tickets_button Registration Configure Ticket Button ir.ui.view qweb New
registration_event_question Registration Event Question ir.ui.view qweb New
registration_template Registration ir.ui.view qweb New
registration_ticket_access Registration Ticket Access ir.ui.view qweb New
remove_external_snippets remove_external_snippets ir.ui.view qweb Inherits website.external_snippets
s_dynamic_snippet_events_single_aside_preview_data Single Event Aside Preview Data ir.ui.view qweb New
s_dynamic_snippet_events_single_badge_preview_data Single Event Badge Preview Data ir.ui.view qweb New
s_dynamic_snippet_events_single_card_preview_data Single Event Card Preview Data ir.ui.view qweb New
s_dynamic_snippet_events_single_entry_preview_data Single Event Entry Preview Data ir.ui.view qweb New
s_dynamic_snippet_events_single_offset_preview_data Single Event Offset Preview Data ir.ui.view qweb New
s_event_upcoming_snippet_card_preview_data Events Card Preview Data ir.ui.view qweb New
s_event_upcoming_snippet_preview_data Events Picture Preview Data ir.ui.view qweb New
s_events Events ir.ui.view qweb New
s_events_card Events Card ir.ui.view qweb New
s_events_picture Events Picture ir.ui.view qweb New
s_events_single_aside Single Event Aside ir.ui.view qweb New
s_events_single_badge Single Event Badge ir.ui.view qweb New
s_events_single_card Single Event Card ir.ui.view qweb New
s_events_single_entry Single Event Entry ir.ui.view qweb New
s_events_single_offset Single Event Offset ir.ui.view qweb New
s_speaker_bio Speaker Bio ir.ui.view qweb New
searched_tags Searched tags ir.ui.view qweb New
snippets snippets ir.ui.view qweb Inherits website.snippets
snippets snippets ir.ui.view qweb Inherits website.snippets
template_intro template_intro ir.ui.view qweb New
website_event.event_empty_events_svg website_event.event_empty_events_svg ir.ui.view qweb New
website_event_menu_view_form website.event.menu.view.form website.event.menu form New
website_event_menu_view_search website.event.menu.view.search website.event.menu search New
website_event_menu_view_tree website.event.menu.view.list website.event.menu list New
website_visitor_view_form website.visitor.view.form.inherit.event website.visitor form Inherits website.website_visitor_view_form
website_visitor_view_tree website.visitor.view.list.inherit.event website.visitor list Inherits website.website_visitor_view_tree
HTTP endpoints (9)
Route(s)HandlerAuthTypeMethodsFlags
/event/<model("event.event"):event>/community EventCommunityController.community public http ALL website
/event/<model("event.event"):event> WebsiteEventController.event public http ALL website
/event/<model("event.event"):event>/page/<path:page> WebsiteEventController.event_page public http ALL sudo website
/event/<model("event.event"):event>/register WebsiteEventController.event_register public http ALL website
/event/<model("event.event"):event>/registration/success WebsiteEventController.event_registration_success public http GET sudo website
(inherited route override) WebsiteEventController.events public http ALL sudo website
/event/<model("event.event"):event>/registration/confirm WebsiteEventController.registration_confirm public http POST website
/event/<model("event.event"):event>/registration/new WebsiteEventController.registration_new public jsonrpc POST website
/event/<model("event.event"):event>/registration/slot/<int:slot_id>/tickets WebsiteEventController.registration_tickets public jsonrpc POST website
Models touched (11)

New fields (20)
  • address_name Char
    related='address_id.name'
  • community_menu Boolean
    compute='_compute_community_menu' help='Display community tab on website' readonly=False store=True args: 'Community Menu'
  • community_menu_ids One2many → website.event.menu
    domain=[('menu_type', '=', 'community')] string='Event Community Menus' args: 'website.event.menu', 'event_id'
  • event_register_url Char
    compute='_compute_event_register_url' args: 'Event Registration Link'
  • introduction_menu Boolean
    compute='_compute_website_menu_data' readonly=False store=True args: 'Introduction Menu'
  • introduction_menu_ids One2many → website.event.menu
    domain=[('menu_type', '=', 'introduction')] string='Introduction Menus' args: 'website.event.menu', 'event_id'
  • is_done Boolean
    compute='_compute_time_data' args: 'Is Done'
  • is_ongoing Boolean
    compute='_compute_time_data' help='Whether event has begun' search='_search_is_ongoing' args: 'Is Ongoing'
  • is_participating Boolean
    compute='_compute_is_participating' search='_search_is_participating' args: 'Is Participating'
  • is_visible_on_website Boolean
    compute='_compute_is_visible_on_website' search='_search_is_visible_on_website' string='Visible On Website'
  • menu_id Many2one → website.menu
    copy=False args: 'website.menu', 'Event Menu'
  • other_menu_ids One2many → website.event.menu
    domain=[('menu_type', '=', 'other')] string='Other Menus' args: 'website.event.menu', 'event_id'
  • register_menu Boolean
    compute='_compute_website_menu_data' readonly=False store=True args: 'Register Menu'
  • register_menu_ids One2many → website.event.menu
    domain=[('menu_type', '=', 'register')] string='Register Menus' args: 'website.event.menu', 'event_id'
  • start_remaining Integer
    compute='_compute_time_data' help='Remaining time before event starts (minutes)' args: 'Remaining before start'
  • start_today Boolean
    compute='_compute_time_data' help='Whether event is going to start today if still not ongoing' args: 'Start Today'
  • subtitle Char
    translate=True args: 'Event Subtitle'
  • website_menu Boolean
    compute='_compute_website_menu' help='Allows to display and manage event-specific menus on website.' precompute=True readonly=False store=True string='Website Menu'
  • website_published Boolean
    tracking=True
  • website_visibility Selection
    default='public' help='Defines the Visibility of the Event on the Website and searches.\n\n Note that the EventEvent is however always available via its link.' required=True string='Website Visibility' tracking=True args: [('public', 'Public'), ('link', 'Via a Link'), ('logged_users', 'Logged Users')]
Public methods (7)
  • copy(self, default=None)
  • copy_event_menus(self, old_events)
  • create(self, vals_list)
    @api.model_create_multi
  • get_backend_menu_id(self)
  • google_map_link(self, zoom=8)
    Temporary method for stable
  • toggle_website_menu(self, val)
  • write(self, vals)

New fields (1)
  • visitor_id Many2one → website.visitor
    index='btree_not_null' ondelete='set null' string='Visitor' args: 'website.visitor'
Public methods (1)
  • get_base_url(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • community_menu Boolean
    compute='_compute_community_menu' help='Display community tab on website' readonly=False store=True args: 'Community Menu'
  • website_menu Boolean
    args: 'Display a dedicated menu on Website'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • get_cta_data(self, website_purpose, website_type)
  • get_suggested_controllers(self)
  • new_page(self, name=False, add_menu=False, template='website.default_page', ispage=True, namespace=None, page_values=None, menu_values=None, sections_arch=None, page_title=None)
    @api.model
    Override the page creation in the context of events. When creating a page for an event, the page needs to be embedded inside the 'website_event.layout' template, otherwise it is not visually contained within that event. Note that to create an event page, one has to first create a menu entry in that event. To determine if this page is an event page: - Check that the path starts with 'event/', this should avoid extra requests in other contexts - Fetch a website.menu linked to this path - Check if we have a website.event.menu linked to that website.menu. In addition, we attach the created view to the website.event.menu and adapt they view key to make it unique in the context of our event, which makes it possible to find the view in the event pages controller. Finally, we also manually adapt the content of the generated page so that it's suited for the website editor generation. This includes removing false attributes and making sure the content is contained within a single oe_structure element (which cannot be 'wrap' as wrap contains the event menu). See: website.menu#save override

New fields (4)
  • event_id Many2one → event.event
    index='btree_not_null' ondelete='cascade' string='Event' args: 'event.event'
  • menu_id Many2one → website.menu
    ondelete='cascade' string='Menu' args: 'website.menu'
  • menu_type Selection
    required=True string='Menu Type' args: [('community', 'Community Menu'), ('introduction', 'Home'), ('register', 'Practical'), ('other', 'Other')]
  • view_id Many2one → ir.ui.view
    help='Used when not being an url based menu' ondelete='cascade' string='View' args: 'ir.ui.view'
Public methods (2)
  • copy(self, default=None)
  • unlink(self)

New fields (0)

No new fields.

Public methods (2)
  • save(self, website_id, data)
    @api.model
    Method context: This method takes a data argument that follows the following format: [ { 'id': 4, url: '/mypage' }, { 'id': 'menu_xxx_...', url: '/anotherpage' } ] The new menu entries are identified by their ID being a string and not an integer value. Note that when going through super() call, those id entries are replaced by their created menu ID (integer), so we need to identify new menu entries before calling super. Override purpose: All sub-menus of an event are children of a 'main' website.menu, linking to the event main page. We abuse that information to determine if the added menu is part of an event or not: If we find a website.event.menu item that has the same parent as the menu we just created -> it means that we just created a menu inside an event. Once we have identified that, we force its URL to be part of the event pages, and we create a matching website.event.menu record for it.
  • unlink(self)
    Override to synchronize event configuration fields with menu deletion.

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields)
    @api.model

New fields (3)
  • event_registered_ids Many2many → event.event
    compute='_compute_event_registered_ids' compute_sudo=True groups='event.group_event_registration_desk' search='_search_event_registered_ids' string='Registered Events' args: 'event.event'
  • event_registration_count Integer
    compute='_compute_event_registration_count' groups='event.group_event_registration_desk' args: '# Registrations'
  • event_registration_ids One2many → event.registration
    groups='event.group_event_registration_desk' string='Event Registrations' args: 'event.registration', 'visitor_id'
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…