Event Sessions

event_session
REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/18.0/event_session
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSVíctor Martínez, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/event
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - event
    - barcodes
    - web
    - base
    - base_setup
    - mail
    - bus
    - web_tour
    - html_editor
    - phone_validation
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to create sessions associated with events.

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
event_registration_report_template_foldable_badge event_registration_report_template_foldable_badge ir.ui.view qweb Inherits event.event_registration_report_template_badge
event_registration_report_template_full_page_ticket event_registration_report_template_full_page_ticket ir.ui.view qweb Inherits event.event_registration_report_template_full_page_ticket
event_registration_view_kanban event.registration field Inherits event.event_registration_view_kanban
view_event_form event.event div Inherits event.view_event_form
view_event_form_create_sessions event.event header Inherits event.view_event_form
view_event_kanban event.event templates Inherits event.view_event_kanban
view_event_registration_calendar event.registration field Inherits event.view_event_registration_calendar
view_event_registration_form event.registration field Inherits event.view_event_registration_form
view_event_registration_graph event.registration field Inherits event.view_event_registration_graph
view_event_registration_pivot event.registration field Inherits event.view_event_registration_pivot
view_event_registration_tree event.registration field Inherits event.view_event_registration_tree
view_event_search event.event filter Inherits event.view_event_search
view_event_session_calendar event.session calendar New
view_event_session_form event.session form New
view_event_session_form_quick_create event.session form New
view_event_session_kanban event.session kanban New
view_event_session_pivot event.session pivot New
view_event_session_search event.session search New
view_event_session_tree event.session list New
view_event_type_form event.type xpath Inherits event.view_event_type_form
view_registration_search event.registration field Inherits event.view_registration_search
view_wizard_event_session_form wizard.event.session form New
Models touched (9)

New fields (5)
  • date_begin Datetime
    compute='_compute_date_begin' readonly=False store=True
  • date_end Datetime
    compute='_compute_date_end' readonly=False store=True
  • session_count Integer
    compute='_compute_session_count' string='Sessions Count'
  • session_ids One2many → event.session
    comodel_name='event.session' inverse_name='event_id' string='Sessions'
  • use_sessions Boolean
    compute='_compute_use_sessions' help='Manage multiple sessions per event' readonly=False store=True string='Event Sessions'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (2)
  • session_scheduler_ids One2many → event.mail.session
    comodel_name='event.mail.session' inverse_name='scheduler_id' string='Session Mails'
  • use_sessions Boolean
    related='event_id.use_sessions'
Public methods (2)
  • execute(self)
  • schedule_communications(self, autocommit=False)
    @api.model

New fields (1)
  • session_scheduler_id Many2one → event.mail.session
    comodel_name='event.mail.session' ondelete='cascade' string='Session Mail'
Public methods (0)

No public methods.

New fields (6)
  • mail_count_done Integer
    copy=False readonly=True args: '# Sent'
  • mail_done Boolean
    copy=False readonly=True args: 'Sent'
  • mail_registration_ids One2many → event.mail.registration
    comodel_name='event.mail.registration' inverse_name='session_scheduler_id'
  • scheduled_date Datetime
    compute='_compute_scheduled_date' store=True
  • scheduler_id Many2one → event.mail
    auto_join=True comodel_name='event.mail' ondelete='cascade' required=True string='Event Mail Scheduler'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='cascade' required=True string='Session'
Public methods (2)
  • execute(self)
    Similar to core's :meth:`event.models.event_mail.execute`, only here we take values from the `event.session` instead.
  • schedule_communications(self, autocommit=False)
    @api.model
    Similar to core's :meth:`event.models.event_mail.schedule_communications`.

New fields (4)
  • event_begin_date Datetime
    compute='_compute_event_begin_date' related=None
  • event_end_date Datetime
    compute='_compute_event_end_date' related=None
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='restrict' string='Session'
  • use_sessions Boolean
    related='event_id.use_sessions'
Public methods (1)
  • get_date_range_str(self, lang_code=False)
    Compatibility with existing email templates: this method existed until v17, but in v18 it was removed in favor of using the event's _get_date_range_str() method, which is what we use now.

New fields (22)
  • active Boolean
    default=True
  • date_begin Datetime
    required=True string='Start Date'
  • date_begin_located Char
    compute='_compute_date_begin_located' string='Start Date Located'
  • date_end Datetime
    required=True string='End Date'
  • date_end_located Char
    compute='_compute_date_end_located' string='End Date Located'
  • event_id Many2one → event.event
    auto_join=True comodel_name='event.event' domain=[('use_sessions', '=', True)] index=True ondelete='cascade' required=True string='Parent Event'
  • event_mail_ids One2many → event.mail.session
    comodel_name='event.mail.session' compute='_compute_event_mail_ids' inverse_name='session_id' store=True string='Mail Schedule'
  • event_registrations_open Boolean
    compute='_compute_event_registrations_open' compute_sudo=True string='Registration open'
  • event_registrations_sold_out Boolean
    compute='_compute_event_registrations_sold_out' compute_sudo=True string='Sold Out'
  • is_finished Boolean
    compute='_compute_is_finished' search='_search_is_finished'
  • is_one_day Boolean
    compute='_compute_is_one_day'
  • is_ongoing Boolean
    compute='_compute_is_ongoing' search='_search_is_ongoing'
  • kanban_state Selection
    copy=False default='normal' selection=<expr>
  • kanban_state_label Char
    compute='_compute_kanban_state_label' store=True tracking=True
  • registration_ids One2many → event.registration
    comodel_name='event.registration' inverse_name='session_id' string='Attendees'
  • seats_available Integer
    compute='_compute_seats' store=True string='Available Seats'
  • seats_reserved Integer
    compute='_compute_seats' store=True string='Reserved Seats'
  • seats_taken Integer
    compute='_compute_seats' store=True string='Number of Taken Seats'
  • seats_used Integer
    compute='_compute_seats' store=True string='Number of Participants'
  • session_update Selection
    default='this' help='Choose what to do with other event sessions' store=False args: [('this', 'This session'), ('subsequent', 'This and following event sessions'), ('all', 'All event sessions')]
  • session_update_message Text
    compute='_compute_session_update_message'
  • stage_id Many2one → event.stage
    comodel_name='event.stage' copy=False default=<expr> group_expand='_read_group_expand_full' ondelete='restrict' tracking=True
Public methods (5)
  • action_open_registrations(self)
    Open session registrations
  • action_set_done(self)
    Similar to core's :meth:`event_event.action_set_done`
  • create(self, vals_list)
    @api.model_create_multi
    Similar to core's :meth:`event_event.create`
  • mail_attendees(self, template_id, force_send=False, filter_func=<expr>)
    Mail session attendees Similar to core's :meth:`event.models.event.mail_attendees`, but here we take only the session's attendees into account.
  • write(self, vals)

New fields (1)
  • time Float
    required=True
Public methods (1)
  • name_create(self, name)
    @api.model

New fields (1)
  • use_sessions Boolean
    help='Manage multiple sessions per event' string='Event Sessions'
Public methods (0)

No public methods.

New fields (19)
  • byday Selection
    string='By day' args: [('1', 'First'), ('2', 'Second'), ('3', 'Third'), ('4', 'Fourth'), ('-1', 'Last')]
  • date_tz Selection
    help='Set it up in the event configurationSessions will be generated up to this date' related='event_id.date_tz'
  • day Integer
    default=1
  • duration Float
    compute='_compute_duration' help='Duration of the sessions in hours' readonly=False required=True store=True
  • event_id Many2one → event.event
    comodel_name='event.event' default=<expr> ondelete='cascade' readonly=True required=True
  • fri Boolean
  • interval Integer
    default=1 required=True
  • mon Boolean
  • month_by Selection
    default='date' args: [('date', 'Date of month'), ('day', 'Day of month')]
  • rrule_type Selection
    default='weekly' required=True string='Recurrence' args: [('weekly', 'Weeks'), ('monthly', 'Months')]
  • sat Boolean
  • start Date
    compute='_compute_start' readonly=False required=True store=True
  • sun Boolean
  • thu Boolean
  • timeslot_ids Many2many → event.session.timeslot
    comodel_name='event.session.timeslot' required=True string='Time slots'
  • tue Boolean
  • until Date
    required=True
  • wed Boolean
  • weekday Selection
    args: [('MON', 'Monday'), ('TUE', 'Tuesday'), ('WED', 'Wednesday'), ('THU', 'Thursday'), ('FRI', 'Friday'), ('SAT', 'Saturday'), ('SUN', 'Sunday')]
Public methods (1)
  • action_create_sessions(self)
REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/16.0/event_session
VERSION
VERSION 1.4.1
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSVíctor Martínez, Weblate, OCA-git-bot, David, oca-ci, Stefan
WEBSITE
WEBSITEhttps://github.com/OCA/event
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - event
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
event_registration_report_template_foldable_badge event_registration_report_template_foldable_badge ir.ui.view qweb Inherits event.event_registration_report_template_foldable_badge
event_registration_report_template_full_page_ticket event_registration_report_template_full_page_ticket ir.ui.view qweb Inherits event.event_registration_report_template_full_page_ticket
event_registration_view_kanban event.registration field Inherits event.event_registration_view_kanban
view_event_form event.event div Inherits event.view_event_form
view_event_form_create_sessions event.event header Inherits event.view_event_form
view_event_kanban event.event templates Inherits event.view_event_kanban
view_event_registration_calendar event.registration field Inherits event.view_event_registration_calendar
view_event_registration_form event.registration field Inherits event.view_event_registration_form
view_event_registration_graph event.registration field Inherits event.view_event_registration_graph
view_event_registration_pivot event.registration field Inherits event.view_event_registration_pivot
view_event_registration_tree event.registration field Inherits event.view_event_registration_tree
view_event_search event.event filter Inherits event.view_event_search
view_event_session_calendar event.session calendar New
view_event_session_form event.session form New
view_event_session_form_quick_create event.session form New
view_event_session_kanban event.session kanban New
view_event_session_pivot event.session pivot New
view_event_session_search event.session search New
view_event_session_tree event.session tree New
view_event_type_form event.type xpath Inherits event.view_event_type_form
view_registration_search event.registration field Inherits event.view_registration_search
view_wizard_event_session_form wizard.event.session form New
Models touched (9)

New fields (5)
  • date_begin Datetime
    compute='_compute_date_begin' readonly=False store=True
  • date_end Datetime
    compute='_compute_date_end' readonly=False store=True
  • session_count Integer
    compute='_compute_session_count' string='Sessions Count'
  • session_ids One2many → event.session
    comodel_name='event.session' inverse_name='event_id' string='Sessions'
  • use_sessions Boolean
    compute='_compute_use_sessions' help='Manage multiple sessions per event' readonly=False store=True string='Event Sessions'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (2)
  • session_scheduler_ids One2many → event.mail.session
    comodel_name='event.mail.session' inverse_name='scheduler_id' string='Session Mails'
  • use_sessions Boolean
    related='event_id.use_sessions'
Public methods (2)
  • execute(self)
  • schedule_communications(self, autocommit=False)
    @api.model

New fields (1)
  • session_scheduler_id Many2one → event.mail.session
    comodel_name='event.mail.session' ondelete='cascade' string='Session Mail'
Public methods (0)

No public methods.

New fields (6)
  • mail_count_done Integer
    copy=False readonly=True args: '# Sent'
  • mail_done Boolean
    copy=False readonly=True args: 'Sent'
  • mail_registration_ids One2many → event.mail.registration
    comodel_name='event.mail.registration' inverse_name='session_scheduler_id'
  • scheduled_date Datetime
    compute='_compute_scheduled_date' store=True
  • scheduler_id Many2one → event.mail
    auto_join=True comodel_name='event.mail' ondelete='cascade' required=True string='Event Mail Scheduler'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='cascade' required=True string='Session'
Public methods (2)
  • execute(self)
    Similar to core's :meth:`event.models.event_mail.execute`, only here we take values from the `event.session` instead.
  • schedule_communications(self, autocommit=False)
    @api.model
    Similar to core's :meth:`event.models.event_mail.schedule_communications`.

New fields (4)
  • event_begin_date Datetime
    compute='_compute_event_begin_date' related=None
  • event_end_date Datetime
    compute='_compute_event_end_date' related=None
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='restrict' string='Session'
  • use_sessions Boolean
    related='event_id.use_sessions'
Public methods (0)

No public methods.

New fields (24)
  • active Boolean
    default=True
  • date_begin Datetime
    required=True string='Start Date'
  • date_begin_located Char
    compute='_compute_date_begin_located' string='Start Date Located'
  • date_end Datetime
    required=True string='End Date'
  • date_end_located Char
    compute='_compute_date_end_located' string='End Date Located'
  • event_id Many2one → event.event
    auto_join=True comodel_name='event.event' domain=[('use_sessions', '=', True)] index=True ondelete='cascade' required=True string='Parent Event'
  • event_mail_ids One2many → event.mail.session
    comodel_name='event.mail.session' compute='_compute_event_mail_ids' inverse_name='session_id' store=True string='Mail Schedule'
  • event_registrations_open Boolean
    compute='_compute_event_registrations_open' compute_sudo=True string='Registration open'
  • event_registrations_sold_out Boolean
    compute='_compute_event_registrations_sold_out' compute_sudo=True string='Sold Out'
  • is_finished Boolean
    compute='_compute_is_finished' search='_search_is_finished'
  • is_one_day Boolean
    compute='_compute_is_one_day'
  • is_ongoing Boolean
    compute='_compute_is_ongoing' search='_search_is_ongoing'
  • kanban_state Selection
    copy=False default='normal' selection=<expr>
  • kanban_state_label Char
    compute='_compute_kanban_state_label' store=True tracking=True
  • registration_ids One2many → event.registration
    comodel_name='event.registration' inverse_name='session_id' string='Attendees'
  • seats_available Integer
    compute='_compute_seats_available' store=True string='Available Seats'
  • seats_available_unexpected Integer
    compute='_compute_seats_available_unexpected' compute_sudo=True string='Number of seats non allocated by an attendee of any kind'
  • seats_expected Integer
    compute='_compute_seats_expected' compute_sudo=True string='Number of Expected Attendees'
  • seats_reserved Integer
    compute='_compute_seats' store=True string='Reserved Seats'
  • seats_unconfirmed Integer
    compute='_compute_seats' store=True string='Unconfirmed Seat Reservations'
  • seats_used Integer
    compute='_compute_seats' store=True string='Number of Participants'
  • session_update Selection
    default='this' help='Choose what to do with other event sessions' store=False args: [('this', 'This session'), ('subsequent', 'This and following event sessions'), ('all', 'All event sessions')]
  • session_update_message Text
    compute='_compute_session_update_message'
  • stage_id Many2one → event.stage
    comodel_name='event.stage' copy=False default=<expr> group_expand='_read_group_stage_ids' ondelete='restrict' tracking=True
Public methods (7)
  • action_open_registrations(self)
    Open session registrations
  • action_set_done(self)
    Similar to core's :meth:`event_event.action_set_done`
  • create(self, vals_list)
    @api.model_create_multi
  • mail_attendees(self, template_id, force_send=False, filter_func=<expr>)
    Mail session attendees Similar to core's :meth:`event.models.event.mail_attendees`, but here we take only the session's attendees into account.
  • name_get(self)
  • onchange(self, values, field_name, field_onchange)
  • write(self, vals)

New fields (1)
  • time Float
    required=True
Public methods (2)
  • name_create(self, name)
    @api.model
  • name_get(self)

New fields (1)
  • use_sessions Boolean
    help='Manage multiple sessions per event' string='Event Sessions'
Public methods (0)

No public methods.

New fields (19)
  • byday Selection
    string='By day' args: [('1', 'First'), ('2', 'Second'), ('3', 'Third'), ('4', 'Fourth'), ('-1', 'Last')]
  • date_tz Selection
    help='Set it up in the event configurationSessions will be generated up to this date' related='event_id.date_tz'
  • day Integer
    default=1
  • duration Float
    compute='_compute_duration' help='Duration of the sessions in hours' readonly=False required=True store=True
  • event_id Many2one → event.event
    comodel_name='event.event' default=<expr> ondelete='cascade' readonly=True required=True
  • fri Boolean
  • interval Integer
    default=1 required=True
  • mon Boolean
  • month_by Selection
    default='date' args: [('date', 'Date of month'), ('day', 'Day of month')]
  • rrule_type Selection
    default='weekly' required=True string='Recurrence' args: [('weekly', 'Weeks'), ('monthly', 'Months')]
  • sat Boolean
  • start Date
    compute='_compute_start' readonly=False required=True store=True
  • sun Boolean
  • thu Boolean
  • timeslot_ids Many2many → event.session.timeslot
    comodel_name='event.session.timeslot' required=True string='Time slots'
  • tue Boolean
  • until Date
    required=True
  • wed Boolean
  • weekday Selection
    args: [('MON', 'Monday'), ('TUE', 'Tuesday'), ('WED', 'Wednesday'), ('THU', 'Thursday'), ('FRI', 'Friday'), ('SAT', 'Saturday'), ('SUN', 'Sunday')]
Public methods (1)
  • action_create_sessions(self)
REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/15.0/event_session
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSGitHub, Ivàn Todorovich, Víctor Martínez, Weblate, OCA-git-bot, David, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/event
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:32
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - event
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
event_registration_report_template_foldable_badge event_registration_report_template_foldable_badge ir.ui.view qweb Inherits event.event_registration_report_template_foldable_badge
event_registration_report_template_full_page_ticket event_registration_report_template_full_page_ticket ir.ui.view qweb Inherits event.event_registration_report_template_full_page_ticket
event_registration_view_kanban event.registration field Inherits event.event_registration_view_kanban
view_event_form event.event div Inherits event.view_event_form
view_event_form_create_sessions event.event header Inherits event.view_event_form
view_event_kanban event.event templates Inherits event.view_event_kanban
view_event_registration_calendar event.registration field Inherits event.view_event_registration_calendar
view_event_registration_form event.registration field Inherits event.view_event_registration_form
view_event_registration_graph event.registration field Inherits event.view_event_registration_graph
view_event_registration_pivot event.registration field Inherits event.view_event_registration_pivot
view_event_registration_tree event.registration field Inherits event.view_event_registration_tree
view_event_search event.event filter Inherits event.view_event_search
view_event_session_calendar event.session calendar New
view_event_session_form event.session form New
view_event_session_form_quick_create event.session form New
view_event_session_kanban event.session kanban New
view_event_session_pivot event.session pivot New
view_event_session_search event.session search New
view_event_session_tree event.session tree New
view_event_type_form event.type xpath Inherits event.view_event_type_form
view_registration_search event.registration field Inherits event.view_registration_search
view_wizard_event_session_form wizard.event.session form New
Models touched (9)

New fields (5)
  • date_begin Datetime
    compute='_compute_date_begin' readonly=False store=True
  • date_end Datetime
    compute='_compute_date_end' readonly=False store=True
  • session_count Integer
    compute='_compute_session_count' string='Sessions Count'
  • session_ids One2many → event.session
    comodel_name='event.session' inverse_name='event_id' string='Sessions'
  • use_sessions Boolean
    compute='_compute_use_sessions' help='Manage multiple sessions per event' readonly=False store=True string='Event Sessions'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (2)
  • session_scheduler_ids One2many → event.mail.session
    comodel_name='event.mail.session' inverse_name='scheduler_id' string='Session Mails'
  • use_sessions Boolean
    related='event_id.use_sessions'
Public methods (2)
  • execute(self)
  • schedule_communications(self, autocommit=False)
    @api.model

New fields (1)
  • session_scheduler_id Many2one → event.mail.session
    comodel_name='event.mail.session' ondelete='cascade' string='Session Mail'
Public methods (0)

No public methods.

New fields (6)
  • mail_count_done Integer
    copy=False readonly=True args: '# Sent'
  • mail_done Boolean
    copy=False readonly=True args: 'Sent'
  • mail_registration_ids One2many → event.mail.registration
    comodel_name='event.mail.registration' inverse_name='session_scheduler_id'
  • scheduled_date Datetime
    compute='_compute_scheduled_date' store=True
  • scheduler_id Many2one → event.mail
    auto_join=True comodel_name='event.mail' ondelete='cascade' required=True string='Event Mail Scheduler'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='cascade' required=True string='Session'
Public methods (2)
  • execute(self)
    Similar to core's :meth:`event.models.event_mail.execute`, only here we take values from the `event.session` instead.
  • schedule_communications(self, autocommit=False)
    @api.model
    Similar to core's :meth:`event.models.event_mail.schedule_communications`.

New fields (4)
  • event_begin_date Datetime
    compute='_compute_event_begin_date' related=None
  • event_end_date Datetime
    compute='_compute_event_end_date' related=None
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='restrict' string='Session'
  • use_sessions Boolean
    related='event_id.use_sessions'
Public methods (0)

No public methods.

New fields (23)
  • active Boolean
    default=True
  • date_begin Datetime
    required=True string='Start Date'
  • date_begin_located Char
    compute='_compute_date_begin_located' string='Start Date Located'
  • date_end Datetime
    required=True string='End Date'
  • date_end_located Char
    compute='_compute_date_end_located' string='End Date Located'
  • event_id Many2one → event.event
    auto_join=True comodel_name='event.event' domain=[('use_sessions', '=', True)] index=True ondelete='cascade' required=True string='Parent Event'
  • event_mail_ids One2many → event.mail.session
    comodel_name='event.mail.session' compute='_compute_event_mail_ids' inverse_name='session_id' store=True string='Mail Schedule'
  • event_registrations_open Boolean
    compute='_compute_event_registrations_open' compute_sudo=True string='Registration open'
  • event_registrations_sold_out Boolean
    compute='_compute_event_registrations_sold_out' compute_sudo=True string='Sold Out'
  • is_finished Boolean
    compute='_compute_is_finished' search='_search_is_finished'
  • is_one_day Boolean
    compute='_compute_is_one_day'
  • is_ongoing Boolean
    compute='_compute_is_ongoing' search='_search_is_ongoing'
  • kanban_state Selection
    copy=False default='normal' selection=<expr>
  • kanban_state_label Char
    compute='_compute_kanban_state_label' store=True tracking=True
  • registration_ids One2many → event.registration
    comodel_name='event.registration' inverse_name='session_id' string='Attendees'
  • seats_available Integer
    compute='_compute_seats_available' store=True string='Available Seats'
  • seats_expected Integer
    compute='_compute_seats_expected' compute_sudo=True string='Number of Expected Attendees'
  • seats_reserved Integer
    compute='_compute_seats' store=True string='Reserved Seats'
  • seats_unconfirmed Integer
    compute='_compute_seats' store=True string='Unconfirmed Seat Reservations'
  • seats_used Integer
    compute='_compute_seats' store=True string='Number of Participants'
  • session_update Selection
    default='this' help='Choose what to do with other event sessions' store=False args: [('this', 'This session'), ('subsequent', 'This and following event sessions'), ('all', 'All event sessions')]
  • session_update_message Text
    compute='_compute_session_update_message'
  • stage_id Many2one → event.stage
    comodel_name='event.stage' copy=False default=<expr> group_expand='_read_group_stage_ids' ondelete='restrict' tracking=True
Public methods (7)
  • action_open_registrations(self)
    Open session registrations
  • action_set_done(self)
    Similar to core's :meth:`event_event.action_set_done`
  • create(self, vals_list)
    @api.model_create_multi
  • mail_attendees(self, template_id, force_send=False, filter_func=<expr>)
    Mail session attendees Similar to core's :meth:`event.models.event.mail_attendees`, but here we take only the session's attendees into account.
  • name_get(self)
  • onchange(self, values, field_name, field_onchange)
  • write(self, vals)

New fields (1)
  • time Float
    required=True
Public methods (2)
  • name_create(self, name)
    @api.model
  • name_get(self)

New fields (1)
  • use_sessions Boolean
    help='Manage multiple sessions per event' string='Event Sessions'
Public methods (0)

No public methods.

New fields (19)
  • byday Selection
    string='By day' args: [('1', 'First'), ('2', 'Second'), ('3', 'Third'), ('4', 'Fourth'), ('-1', 'Last')]
  • date_tz Selection
    help='Set it up in the event configurationSessions will be generated up to this date' related='event_id.date_tz'
  • day Integer
    default=1
  • duration Float
    compute='_compute_duration' help='Duration of the sessions in hours' readonly=False required=True store=True
  • event_id Many2one → event.event
    comodel_name='event.event' default=<expr> ondelete='cascade' readonly=True required=True
  • fri Boolean
  • interval Integer
    default=1 required=True
  • mon Boolean
  • month_by Selection
    default='date' args: [('date', 'Date of month'), ('day', 'Day of month')]
  • rrule_type Selection
    default='weekly' required=True string='Recurrence' args: [('weekly', 'Weeks'), ('monthly', 'Months')]
  • sat Boolean
  • start Date
    compute='_compute_start' readonly=False required=True store=True
  • sun Boolean
  • thu Boolean
  • timeslot_ids Many2many → event.session.timeslot
    comodel_name='event.session.timeslot' required=True string='Time slots'
  • tue Boolean
  • until Date
    required=True
  • wed Boolean
  • weekday Selection
    args: [('MON', 'Monday'), ('TUE', 'Tuesday'), ('WED', 'Wednesday'), ('THU', 'Thursday'), ('FRI', 'Friday'), ('SAT', 'Saturday'), ('SUN', 'Sunday')]
Public methods (1)
  • action_create_sessions(self)
REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/14.0/event_session
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSdavid, OCA Transbot, oca-travis, Weblate, OCA-git-bot, oca-ci, Stefan, oca-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/event
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/event:
    - event_mail
odoo/odoo:
    - event
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
event_event_view_pivot_extended event.event pivot Inherits event.event_event_view_pivot
generator_view_form Event sessions generator wizard.event.session form New
session_view_event_form event.event field Inherits event.view_event_form
view_event_form event.event xpath Inherits event.view_event_form
view_event_registration_form event.registration field Inherits event.view_event_registration_form
view_event_registration_tree event.registration field Inherits event.view_event_registration_tree
view_event_session_calendar event.session.calendar event.session calendar New
view_event_session_form event.session.form event.session form New
view_event_session_pivot event.session.pivot event.session pivot New
view_event_session_tree event.session.tree event.session tree New
view_session_search event.session.search event.session search New
Models touched (7)

New fields (7)
  • cancel_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Cancelled Registrations'
  • confirm_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Confirmed Registrations'
  • draft_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Draft Registrations'
  • generate_sessions_button_hide Boolean
    related='stage_id.pipe_end'
  • seats_available_expected Integer
    compute='_compute_seats_available_expected' readonly=True store=True string='Available expected seats'
  • session_ids One2many → event.session
    comodel_name='event.session' inverse_name='event_id' string='Sessions'
  • sessions_count Integer
    compute='_compute_sessions_count' store=True string='Total event sessions'
Public methods (0)

No public methods.

New fields (3)
  • event_id Many2one
    required=False
  • event_mail_template_id Many2one → event.mail.template
    comodel_name='event.mail.template' ondelete='cascade' string='Event Mail Template'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='cascade' string='Session'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • event_sessions_count Integer
    readonly=True related='event_id.sessions_count'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='restrict' string='Session'
Public methods (1)
  • write(self, vals)
    Trigger schedulers the same way it's done with events now

New fields (20)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' related='event_id.company_id' store=True
  • date_begin Datetime
    default=<expr> required=True string='Session start date'
  • date_begin_located Datetime
    compute='_compute_date_begin_located' string='Start Date Located'
  • date_end Datetime
    default=<expr> required=True string='Session date end'
  • date_end_located Datetime
    compute='_compute_date_end_located' string='End Date Located'
  • date_tz Selection
    related='event_id.date_tz' string='Timezone'
  • event_id Many2one → event.event
    comodel_name='event.event' string='Event'
  • event_mail_ids One2many → event.mail
    comodel_name='event.mail' copy=True inverse_name='session_id' string='Mail Schedule'
  • name Char
    compute='_compute_name' default='/' required=True store=True string='Session'
  • registration_ids One2many → event.registration
    comodel_name='event.registration' inverse_name='session_id' string='Attendees'
  • seats_available Integer
    compute='_compute_seats' readonly=True store=True string='Available Seats'
  • seats_available_expected Integer
    compute='_compute_seats' readonly=True store=True string='Available Expected Seats'
  • seats_available_pc Float
    compute='_compute_seats' compute_sudo=True readonly=True string='Full %'
  • seats_expected Integer
    compute='_compute_seats' readonly=True store=True string='Number of Expected Attendees'
  • seats_limited Boolean
    required=True string='Maximum Attendees'
  • seats_max Integer
    string='Maximum seats'
  • seats_reserved Integer
    compute='_compute_seats' readonly=True store=True string='Reserved Seats'
  • seats_unconfirmed Integer
    compute='_compute_seats' readonly=True store=True string='Unconfirmed Seat Reservations'
  • seats_used Integer
    compute='_compute_seats' readonly=True store=True string='Number of Participants'
Public methods (5)
  • button_open_registration(self)
    Opens session registrations
  • create(self, vals)
    @api.model
  • name_get(self)
    Redefine the name_get method to show the event name with the event session.
  • onchange_event_id(self)
    @api.onchange('event_id')
  • unlink(self)

New fields (15)
  • delete_existing_sessions Boolean
    default=True help='Check in order to delete every previous session for this event'
  • event_date_begin Datetime
    help='Set it up in the event configurationSessions will be generated from this date' readonly=True related='event_id.date_begin'
  • event_date_end Datetime
    help='Set it up in the event configurationSessions will be generated up to this date' readonly=True related='event_id.date_end'
  • event_date_tz Selection
    help='Set it up in the event configurationSessions will be generated up to this date' readonly=True related='event_id.date_tz'
  • event_id Many2one → event.event
    comodel_name='event.event' default=<expr> ondelete='cascade' readonly=True required=True
  • event_mail_template_id Many2one → event.mail.template
    comodel_name='event.mail.template' string='Mail Schedule'
  • fridays Boolean
    help='Create sessions on Fridays'
  • mondays Boolean
    help='Create sessions on Mondays'
  • name Char
    default='/' help='It will be generated according to given parameters' required=True args: 'Session info'
  • saturdays Boolean
    help='Create sessions on Saturdays'
  • session_hour_ids One2many → wizard.event.session.hours
    comodel_name='wizard.event.session.hours' inverse_name='wizard_event_session_id' string='Hours'
  • sundays Boolean
    help='Create sessions on Sundays'
  • thursdays Boolean
    help='Create sessions on Thursdays'
  • tuesdays Boolean
    help='Create sessions on Tuesdays'
  • wednesdays Boolean
    help='Create sessions on Wednesdays'
Public methods (4)
  • action_generate_sessions(self)
    Here's where magic is triggered
  • existing_sessions(self, date)
    Return existing sessions that match some criteria.
  • generate_sessions(self)
  • weekdays(self)
    Generate a tuple with the values for accessing days by index.

New fields (3)
  • end_time Float
    required=True
  • start_time Float
    required=True
  • wizard_event_session_id Many2one → wizard.event.session
    comodel_name='wizard.event.session'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/13.0/event_session
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, oca-travis, Weblate, OCA-git-bot, Carlos Roca, David Alonso // Solvos
WEBSITE
WEBSITEhttps://github.com/OCA/event
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/event:
    - event_mail
odoo/odoo:
    - event
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
event_event_view_pivot_extended event.event pivot Inherits event.event_event_view_pivot
generator_view_form Event sessions generator wizard.event.session form New
session_view_event_form event.event field Inherits event.view_event_form
view_event_form event.event xpath Inherits event.view_event_form
view_event_registration_form event.registration field Inherits event.view_event_registration_form
view_event_registration_tree event.registration field Inherits event.view_event_registration_tree
view_event_session_calendar event.session.calendar event.session calendar New
view_event_session_form event.session.form event.session form New
view_event_session_pivot event.session.pivot event.session pivot New
view_event_session_tree event.session.tree event.session tree New
view_session_search event.session.search event.session search New
Models touched (7)

New fields (6)
  • cancel_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Cancelled Registrations'
  • confirm_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Confirmed Registrations'
  • draft_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Draft Registrations'
  • seats_available_expected Integer
    compute='_compute_seats_available_expected' readonly=True store=True string='Available expected seats'
  • session_ids One2many → event.session
    comodel_name='event.session' inverse_name='event_id' string='Sessions'
  • sessions_count Integer
    compute='_compute_sessions_count' store=True string='Total event sessions'
Public methods (0)

No public methods.

New fields (3)
  • event_id Many2one
    required=False
  • event_mail_template_id Many2one → event.mail.template
    comodel_name='event.mail.template' ondelete='cascade' string='Event Mail Template'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='cascade' string='Session'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • event_sessions_count Integer
    readonly=True related='event_id.sessions_count'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='restrict' string='Session'
Public methods (1)
  • confirm_registration(self)

New fields (21)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' related='event_id.company_id' store=True
  • date_begin Datetime
    default=<expr> required=True string='Session start date'
  • date_begin_located Datetime
    compute='_compute_date_begin_located' string='Start Date Located'
  • date_end Datetime
    default=<expr> required=True string='Session date end'
  • date_end_located Datetime
    compute='_compute_date_end_located' string='End Date Located'
  • date_tz Selection
    related='event_id.date_tz' string='Timezone'
  • event_id Many2one → event.event
    comodel_name='event.event' string='Event'
  • event_mail_ids One2many → event.mail
    comodel_name='event.mail' copy=True inverse_name='session_id' string='Mail Schedule'
  • name Char
    compute='_compute_name' default='/' required=True store=True string='Session'
  • registration_ids One2many → event.registration
    comodel_name='event.registration' inverse_name='session_id' state={'done': [('readonly', True)]} string='Attendees'
  • seats_availability Selection
    default='unlimited' required=True args: [('limited', 'Limited'), ('unlimited', 'Unlimited')], 'Maximum Attendees'
  • seats_available Integer
    compute='_compute_seats' readonly=True store=True string='Available Seats'
  • seats_available_expected Integer
    compute='_compute_seats' readonly=True store=True string='Available Expected Seats'
  • seats_available_pc Float
    compute='_compute_seats' compute_sudo=True readonly=True string='Full %'
  • seats_expected Integer
    compute='_compute_seats' readonly=True store=True string='Number of Expected Attendees'
  • seats_max Integer
    string='Maximum seats'
  • seats_min Integer
    string='Minimum seats'
  • seats_reserved Integer
    compute='_compute_seats' readonly=True store=True string='Reserved Seats'
  • seats_unconfirmed Integer
    compute='_compute_seats' readonly=True store=True string='Unconfirmed Seat Reservations'
  • seats_used Integer
    compute='_compute_seats' readonly=True store=True string='Number of Participants'
Public methods (5)
  • button_open_registration(self)
    Opens session registrations
  • create(self, vals)
    @api.model
  • name_get(self)
    Redefine the name_get method to show the event name with the event session.
  • onchange_event_id(self)
    @api.onchange('event_id')
  • unlink(self)

New fields (15)
  • delete_existing_sessions Boolean
    default=True help='Check in order to delete every previous session for this event'
  • event_date_begin Datetime
    help='Set it up in the event configurationSessions will be generated from this date' readonly=True related='event_id.date_begin'
  • event_date_end Datetime
    help='Set it up in the event configurationSessions will be generated up to this date' readonly=True related='event_id.date_end'
  • event_date_tz Selection
    help='Set it up in the event configurationSessions will be generated up to this date' readonly=True related='event_id.date_tz'
  • event_id Many2one → event.event
    comodel_name='event.event' default=<expr> on_delete='cascade' readonly=True required=True
  • event_mail_template_id Many2one → event.mail.template
    comodel_name='event.mail.template' string='Mail Schedule'
  • fridays Boolean
    help='Create sessions on Fridays'
  • mondays Boolean
    help='Create sessions on Mondays'
  • name Char
    default='/' help='It will be generated according to given parameters' required=True args: 'Session info'
  • saturdays Boolean
    help='Create sessions on Saturdays'
  • session_hour_ids One2many → wizard.event.session.hours
    comodel_name='wizard.event.session.hours' inverse_name='wizard_event_session_id' string='Hours'
  • sundays Boolean
    help='Create sessions on Sundays'
  • thursdays Boolean
    help='Create sessions on Thursdays'
  • tuesdays Boolean
    help='Create sessions on Tuesdays'
  • wednesdays Boolean
    help='Create sessions on Wednesdays'
Public methods (4)
  • action_generate_sessions(self)
    Here's where magic is triggered
  • existing_sessions(self, date)
    Return existing sessions that match some criteria.
  • generate_sessions(self)
  • weekdays(self)
    Generate a tuple with the values for accessing days by index.

New fields (3)
  • end_time Float
    required=True
  • start_time Float
    required=True
  • wizard_event_session_id Many2one → wizard.event.session
    comodel_name='wizard.event.session'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/12.0/event_session
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSOCA Transbot, Loïc Faure-Lacroix, oca-travis, Weblate, OCA-git-bot, David
WEBSITE
WEBSITEhttps://github.com/oca/event.git
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/event:
    - event_mail
odoo/odoo:
    - event
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
event_event_view_pivot_extended event.event pivot Inherits event.event_event_view_pivot
generator_view_form Event sessions generator wizard.event.session form New
session_view_event_form event.event field Inherits event.view_event_form
view_event_form event.event xpath Inherits event.view_event_form
view_event_registration_form event.registration field Inherits event.view_event_registration_form
view_event_registration_tree event.registration field Inherits event.view_event_registration_tree
view_event_session_calendar event.session.calendar event.session calendar New
view_event_session_form event.session.form event.session form New
view_event_session_pivot event.session.pivot event.session pivot New
view_event_session_tree event.session.tree event.session tree New
view_session_search event.session.search event.session search New
Models touched (7)

New fields (6)
  • cancel_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Cancelled Registrations'
  • confirm_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Confirmed Registrations'
  • draft_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Draft Registrations'
  • seats_available_expected Integer
    compute='_compute_seats_available_expected' readonly=True store=True string='Available expected seats'
  • session_ids One2many → event.session
    comodel_name='event.session' inverse_name='event_id' string='Sessions'
  • sessions_count Integer
    compute='_compute_sessions_count' store=True string='Total event sessions'
Public methods (0)

No public methods.

New fields (3)
  • event_id Many2one
    required=False
  • event_mail_template_id Many2one → event.mail.template
    comodel_name='event.mail.template' ondelete='cascade' string='Event Mail Template'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='cascade' string='Session'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • event_sessions_count Integer
    readonly=True related='event_id.sessions_count'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='restrict' string='Session'
Public methods (1)
  • confirm_registration(self)
    @api.multi

New fields (21)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' related='event_id.company_id' store=True
  • date_begin Datetime
    default=<expr> required=True string='Session start date'
  • date_begin_located Datetime
    compute='_compute_date_begin_located' string='Start Date Located'
  • date_end Datetime
    default=<expr> required=True string='Session date end'
  • date_end_located Datetime
    compute='_compute_date_end_located' string='End Date Located'
  • date_tz Selection
    related='event_id.date_tz' string='Timezone'
  • event_id Many2one → event.event
    comodel_name='event.event' string='Event'
  • event_mail_ids One2many → event.mail
    comodel_name='event.mail' copy=True inverse_name='session_id' string='Mail Schedule'
  • name Char
    compute='_compute_name' default='/' required=True store=True string='Session'
  • registration_ids One2many → event.registration
    comodel_name='event.registration' inverse_name='session_id' state={'done': [('readonly', True)]} string='Attendees'
  • seats_availability Selection
    default='unlimited' required=True args: [('limited', 'Limited'), ('unlimited', 'Unlimited')], 'Maximum Attendees'
  • seats_available Integer
    compute='_compute_seats' oldname='register_avail' readonly=True store=True string='Available Seats'
  • seats_available_expected Integer
    compute='_compute_seats' readonly=True store=True string='Available Expected Seats'
  • seats_available_pc Float
    compute='_compute_seats' readonly=True string='Full %'
  • seats_expected Integer
    compute='_compute_seats' readonly=True store=True string='Number of Expected Attendees'
  • seats_max Integer
    string='Maximum seats'
  • seats_min Integer
    string='Minimum seats'
  • seats_reserved Integer
    compute='_compute_seats' readonly=True store=True string='Reserved Seats'
  • seats_unconfirmed Integer
    compute='_compute_seats' oldname='register_prospect' readonly=True store=True string='Unconfirmed Seat Reservations'
  • seats_used Integer
    compute='_compute_seats' oldname='register_attended' readonly=True store=True string='Number of Participants'
Public methods (5)
  • button_open_registration(self)
    @api.multi
    Opens session registrations
  • create(self, vals)
    @api.model
  • name_get(self)
    @api.multi
    Redefine the name_get method to show the event name with the event session.
  • onchange_event_id(self)
    @api.onchange('event_id')
  • unlink(self)
    @api.multi

New fields (15)
  • delete_existing_sessions Boolean
    default=True help='Check in order to delete every previous session for this event'
  • event_date_begin Datetime
    help='Set it up in the event configurationSessions will be generated from this date' readonly=True related='event_id.date_begin'
  • event_date_end Datetime
    help='Set it up in the event configurationSessions will be generated up to this date' readonly=True related='event_id.date_end'
  • event_date_tz Selection
    help='Set it up in the event configurationSessions will be generated up to this date' readonly=True related='event_id.date_tz'
  • event_id Many2one → event.event
    comodel_name='event.event' default=<expr> on_delete='cascade' readonly=True required=True
  • event_mail_template_id Many2one → event.mail.template
    comodel_name='event.mail.template' string='Mail Schedule'
  • fridays Boolean
    help='Create sessions on Fridays'
  • mondays Boolean
    help='Create sessions on Mondays'
  • name Char
    default='/' help='It will be generated according to given parameters' required=True args: 'Session info'
  • saturdays Boolean
    help='Create sessions on Saturdays'
  • session_hour_ids One2many → wizard.event.session.hours
    comodel_name='wizard.event.session.hours' inverse_name='wizard_event_session_id' string='Hours'
  • sundays Boolean
    help='Create sessions on Sundays'
  • thursdays Boolean
    help='Create sessions on Thursdays'
  • tuesdays Boolean
    help='Create sessions on Tuesdays'
  • wednesdays Boolean
    help='Create sessions on Wednesdays'
Public methods (4)
  • action_generate_sessions(self)
    @api.multi
    Here's where magic is triggered
  • existing_sessions(self, date)
    @api.multi
    Return existing sessions that match some criteria.
  • generate_sessions(self)
    @api.multi
  • weekdays(self)
    @api.multi
    Generate a tuple with the values for accessing days by index.

New fields (3)
  • end_time Float
    required=True
  • start_time Float
    required=True
  • wizard_event_session_id Many2one → wizard.event.session
    comodel_name='wizard.event.session'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/11.0/event_session
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSRonald Portier, OCA Transbot, oca-travis, OCA-git-bot, Nikos Tsirintanis
WEBSITE
WEBSITEhttps://github.com/oca/event.git
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - event
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
event_event_view_pivot_extended event.event pivot Inherits event.event_event_view_pivot
generator_view_form Event sessions generator wizard.event.session form New
session_view_event_form event.event field Inherits event.view_event_form
view_event_form event.event xpath Inherits event.view_event_form
view_event_registration_form event.registration field Inherits event.view_event_registration_form
view_event_registration_tree event.registration field Inherits event.view_event_registration_tree
view_event_session_calendar event.session.calendar event.session calendar New
view_event_session_form event.session.form event.session form New
view_event_session_pivot event.session.pivot event.session pivot New
view_event_session_tree event.session.tree event.session tree New
view_session_search event.session.search event.session search New
Models touched (9)

New fields (6)
  • cancel_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Cancelled Registrations'
  • confirm_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Confirmed Registrations'
  • draft_state Integer
    compute='_compute_state_numbers' store=True string=' # No of Draft Registrations'
  • seats_available_expected Integer
    compute='_compute_seats_available_expected' readonly=True store=True string='Available expected seats'
  • session_ids One2many → event.session
    comodel_name='event.session' inverse_name='event_id' string='Sessions'
  • sessions_count Integer
    compute='_compute_sessions_count' store=True string='Total event sessions'
Public methods (0)

No public methods.

New fields (3)
  • event_id Many2one
    required=False
  • event_mail_template_id Many2one → event.mail.template
    comodel_name='event.mail.template' ondelete='cascade' string='Event Mail Template'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='cascade' string='Session'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • name Char
  • scheduler_template_ids One2many → event.mail
    comodel_name='event.mail' default=_default_scheduler_template_ids inverse_name='event_mail_template_id' string='Mail Schedule'
Public methods (0)

No public methods.

New fields (2)
  • event_sessions_count Integer
    readonly=True related='event_id.sessions_count'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='restrict' string='Session'
Public methods (1)
  • confirm_registration(self)
    @api.multi

New fields (21)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' related='event_id.company_id' store=True
  • date_begin Datetime
    default=<expr> required=True string='Session start date'
  • date_begin_located Datetime
    compute='_compute_date_begin_located' string='Start Date Located'
  • date_end Datetime
    default=<expr> required=True string='Session date end'
  • date_end_located Datetime
    compute='_compute_date_end_located' string='End Date Located'
  • date_tz Selection
    related='event_id.date_tz' string='Timezone'
  • event_id Many2one → event.event
    comodel_name='event.event' string='Event'
  • event_mail_ids One2many → event.mail
    comodel_name='event.mail' copy=True inverse_name='session_id' string='Mail Schedule'
  • name Char
    compute='_compute_name' default='/' required=True store=True string='Session'
  • registration_ids One2many → event.registration
    comodel_name='event.registration' inverse_name='session_id' state={'done': [('readonly', True)]} string='Attendees'
  • seats_availability Selection
    default='unlimited' required=True args: [('limited', 'Limited'), ('unlimited', 'Unlimited')], 'Maximum Attendees'
  • seats_available Integer
    compute='_compute_seats' oldname='register_avail' readonly=True store=True string='Available Seats'
  • seats_available_expected Integer
    compute='_compute_seats' readonly=True store=True string='Available Expected Seats'
  • seats_available_pc Float
    compute='_compute_seats' readonly=True string='Full %'
  • seats_expected Integer
    compute='_compute_seats' readonly=True store=True string='Number of Expected Attendees'
  • seats_max Integer
    string='Maximum seats'
  • seats_min Integer
    string='Minimum seats'
  • seats_reserved Integer
    compute='_compute_seats' readonly=True store=True string='Reserved Seats'
  • seats_unconfirmed Integer
    compute='_compute_seats' oldname='register_prospect' readonly=True store=True string='Unconfirmed Seat Reservations'
  • seats_used Integer
    compute='_compute_seats' oldname='register_attended' readonly=True store=True string='Number of Participants'
Public methods (5)
  • button_open_registration(self)
    @api.multi
    Opens session registrations
  • create(self, vals)
    @api.model
  • name_get(self)
    @api.multi
    Redefine the name_get method to show the event name with the event session.
  • onchange_event_id(self)
    @api.onchange('event_id')
  • unlink(self)
    @api.multi

New fields (1)
  • event_mail_template_id Many2one → event.mail
    comodel_name='event.mail' string='Mail Template'
Public methods (1)
  • set_values(self)
    @api.multi

New fields (15)
  • delete_existing_sessions Boolean
    default=True help='Check in order to delete every previous session for this event'
  • event_date_begin Datetime
    help='Set it up in the event configurationSessions will be generated from this date' readonly=True related='event_id.date_begin'
  • event_date_end Datetime
    help='Set it up in the event configurationSessions will be generated up to this date' readonly=True related='event_id.date_end'
  • event_date_tz Selection
    help='Set it up in the event configurationSessions will be generated up to this date' readonly=True related='event_id.date_tz'
  • event_id Many2one → event.event
    comodel_name='event.event' default=<expr> on_delete='cascade' readonly=True required=True
  • event_mail_template_id Many2one → event.mail.template
    comodel_name='event.mail.template' string='Mail Schedule Template'
  • fridays Boolean
    help='Create sessions on Fridays'
  • mondays Boolean
    help='Create sessions on Mondays'
  • name Char
    default='/' help='It will be generated according to given parameters' required=True args: 'Session info'
  • saturdays Boolean
    help='Create sessions on Saturdays'
  • session_hour_ids One2many → wizard.event.session.hours
    comodel_name='wizard.event.session.hours' inverse_name='wizard_event_session_id' string='Hours'
  • sundays Boolean
    help='Create sessions on Sundays'
  • thursdays Boolean
    help='Create sessions on Thursdays'
  • tuesdays Boolean
    help='Create sessions on Tuesdays'
  • wednesdays Boolean
    help='Create sessions on Wednesdays'
Public methods (4)
  • action_generate_sessions(self)
    @api.multi
    Here's where magic is triggered
  • existing_sessions(self, date)
    @api.multi
    Return existing sessions that match some criteria.
  • generate_sessions(self)
    @api.multi
  • weekdays(self)
    @api.multi
    Generate a tuple with the values for accessing days by index.

New fields (3)
  • end_time Float
    required=True
  • start_time Float
    required=True
  • wizard_event_session_id Many2one → wizard.event.session
    comodel_name='wizard.event.session'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/10.0/event_session
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, OCA-git-bot, David
WEBSITE
WEBSITEhttps://odoo-community.org/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/event:
    - event_mail
odoo/odoo:
    - event
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - bus
    - web_tour
    - report
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
generator_view_form Event sessions generator wizard.event.session form New
report_event_registration_pivot report.event.registration field Inherits event.report_event_registration_pivot
session_view_event_form event.event field Inherits event.view_event_form
view_event_form event.event xpath Inherits event.view_event_form
view_event_registration_form event.registration field Inherits event.view_event_registration_form
view_event_registration_tree event.registration field Inherits event.view_event_registration_tree
view_event_session_calendar event.session.calendar event.session calendar New
view_event_session_form event.session.form event.session form New
view_event_session_tree event.session.tree event.session tree New
view_report_event_registration_search report.event.registration field Inherits event.view_report_event_registration_search
view_session_search event.session.search event.session search New
Models touched (8)

New fields (3)
  • seats_expected Integer
    store=True
  • session_ids One2many → event.session
    comodel_name='event.session' inverse_name='event_id' string='Sessions'
  • sessions_count Integer
    compute='_compute_sessions_count' store=True string='Total event sessions'
Public methods (0)

No public methods.

New fields (1)
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='cascade' string='Session'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • event_sessions_count Integer
    readonly=True related='event_id.sessions_count'
  • session_id Many2one → event.session
    comodel_name='event.session' ondelete='restrict' string='Session'
Public methods (1)
  • confirm_registration(self)
    @api.multi

New fields (21)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' related='event_id.company_id' store=True
  • date_begin Datetime
    default=<expr> required=True string='Session start date'
  • date_begin_located Datetime
    compute='_compute_date_begin_located' string='Start Date Located'
  • date_end Datetime
    default=<expr> required=True string='Session date end'
  • date_end_located Datetime
    compute='_compute_date_end_located' string='End Date Located'
  • date_tz Selection
    related='event_id.date_tz' string='Timezone'
  • event_id Many2one → event.event
    comodel_name='event.event' string='Event'
  • event_mail_ids One2many → event.mail
    comodel_name='event.mail' copy=True inverse_name='session_id' string='Mail Schedule'
  • name Char
    compute='_compute_name' default='/' required=True store=True string='Session'
  • registration_ids One2many → event.registration
    comodel_name='event.registration' inverse_name='session_id' state={'done': [('readonly', True)]} string='Attendees'
  • seats_availability Selection
    default='unlimited' required=True args: [('limited', 'Limited'), ('unlimited', 'Unlimited')], 'Maximum Attendees'
  • seats_available Integer
    compute='_compute_seats' oldname='register_avail' readonly=True store=True string='Available Seats'
  • seats_available_expected Integer
    compute='_compute_seats' readonly=True store=True string='Available Expected Seats'
  • seats_available_pc Float
    compute='_compute_seats' readonly=True string='Full %'
  • seats_expected Integer
    compute='_compute_seats' readonly=True store=True string='Number of Expected Attendees'
  • seats_max Integer
    string='Maximum seats'
  • seats_min Integer
    string='Minimum seats'
  • seats_reserved Integer
    compute='_compute_seats' readonly=True store=True string='Reserved Seats'
  • seats_unconfirmed Integer
    compute='_compute_seats' oldname='register_prospect' readonly=True store=True string='Unconfirmed Seat Reservations'
  • seats_used Integer
    compute='_compute_seats' oldname='register_attended' readonly=True store=True string='Number of Participants'
Public methods (4)
  • button_open_registration(self)
    @api.multi
    Opens session registrations
  • create(self, vals)
    @api.model
  • name_get(self)
    @api.multi
    Redefine the name_get method to show the event name with the event session.
  • onchange_event_id(self)
    @api.onchange('event_id')

New fields (6)
  • seats_available Integer
    group_operator='min' readonly=True string='Available seats'
  • seats_available_expected Integer
    group_operator='min' readonly=True string='Available expected seats'
  • seats_expected Integer
    group_operator='max' readonly=True string='Seats expected'
  • seats_max Integer
    group_operator='max'
  • session_count Integer
    group_operator='min' readonly=True string='# of Event Sessions'
  • session_id Many2one → event.session
    comodel_name='event.session' readonly=True required=True string='Session'
Public methods (0)

No public methods.

New fields (15)
  • delete_existing_sessions Boolean
    default=True help='Check in order to delete every previous session for this event'
  • event_date_begin Datetime
    help='Set it up in the event configurationSessions will be generated from this date' readonly=True related='event_id.date_begin'
  • event_date_end Datetime
    help='Set it up in the event configurationSessions will be generated up to this date' readonly=True related='event_id.date_end'
  • event_date_tz Selection
    help='Set it up in the event configurationSessions will be generated up to this date' readonly=True related='event_id.date_tz'
  • event_id Many2one → event.event
    comodel_name='event.event' default=<expr> on_delete='cascade' readonly=True required=True
  • event_mail_template_id Many2one → event.mail.template
    comodel_name='event.mail.template' string='Mail Schedule Template'
  • fridays Boolean
    help='Create sessions on Fridays'
  • mondays Boolean
    help='Create sessions on Mondays'
  • name Char
    default='/' help='It will be generated according to given parameters' required=True args: 'Session info'
  • saturdays Boolean
    help='Create sessions on Saturdays'
  • session_hour_ids One2many → wizard.event.session.hours
    comodel_name='wizard.event.session.hours' inverse_name='wizard_event_session_id' string='Hours'
  • sundays Boolean
    help='Create sessions on Sundays'
  • thursdays Boolean
    help='Create sessions on Thursdays'
  • tuesdays Boolean
    help='Create sessions on Tuesdays'
  • wednesdays Boolean
    help='Create sessions on Wednesdays'
Public methods (4)
  • action_generate_sessions(self)
    @api.multi
    Here's where magic is triggered
  • existing_sessions(self, date)
    @api.multi
    Return existing sessions that match some criteria.
  • generate_sessions(self)
    @api.multi
  • weekdays(self)
    @api.multi
    Generate a tuple with the values for accessing days by index.

New fields (3)
  • end_time Float
    required=True
  • start_time Float
    required=True
  • wizard_event_session_id Many2one → wizard.event.session
    comodel_name='wizard.event.session'
Public methods (0)

No public methods.