Repository
odoo/odoo · module folder
Module version
1.9
Category
Marketing/Events
Folder size
18.2 MB
License
LGPL-3
Application
No
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 Morel, Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Nicolas Martinelli, Aaron Bohy, Jeremy Kersten, Damien Bouvy, qsm-odoo, Julien Castiaux, Adrien Dieudonné, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, Florian Charlier, luvi, Renaud Thiry, Julien Banken, Louis Wicket (wil), Victor Piryns (pivi), amdi-odoo, Levi Siuzdak (sile), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Antoine (ande), Louis Travaux, omra-odoo, lase@odoo.com, Jérémy Hennecart (jeh), Julien Carion (juca), adsh-odoo, nihp-odoo, Max Whale, Shaan Thakkar (THSH), yagp-odoo, abdelrahmanfawzy, khsr-odoo, Pierre Pulinckx, Bastien PIERRE, Michaël Mattiello, Krzysztof Magusiak (krma), Tyler Landivar (tylan), mojem, defl, bikh-odoo, josm-odoo, adip-odoo, Augustin (duau), Yagnik ✗ (yagp), Karna, assh-odoo, saurabh, alan-odoo, Farah (ahmfa), ELCO, jsum-odoo, chpa-odoo, Claire Nguyen (clan), Romain ROSANO (rros)
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
crm_event, event_booth, event_crm, event_email_reminder, event_min_seat, event_product, event_registration_cancel_reason, event_sms, event_stage_cancelled, hr_skills_event, mass_mailing_event, mass_mailing_event_sms, partner_event, test_event_full, website_event
Description
Organization and management of Events.
======================================

The event module allows you to efficiently organize events and all related tasks: planning, registration tracking,
attendances, etc.

Key Features
------------
* Manage your Events and Registrations
* Use emails to automatically confirm and send acknowledgments for any event registration

Code Analysis

Views touched (65)
XML IDNameModelTypeStatus
attendee_list attendee_list ir.ui.view qweb New
event_default_descripton Event default description ir.ui.view qweb New
event_event_attendee_list event_event_attendee_list ir.ui.view qweb New
event_event_report_template_badge event_event_report_template_badge ir.ui.view qweb New
event_event_report_template_full_page_ticket event_event_report_template_full_page_ticket ir.ui.view qweb New
event_event_ticket_form_view event.event.ticket.view.form event.event.ticket form New
event_event_ticket_view_form_from_event event.event.ticket.view.form.from.event event.event.ticket form New
event_event_ticket_view_kanban_from_event event.event.ticket.view.kanban.from.event event.event.ticket kanban New
event_event_ticket_view_tree event.event.ticket.view.list event.event.ticket list Inherits event_event_ticket_view_tree_from_event
event_event_ticket_view_tree_from_event event.event.ticket.view.list.from.event event.event.ticket list New
event_event_view_activity event.event.view.activity event.event activity New
event_event_view_form_quick_create event.event.form.quick_create event.event form New
event_question_view_form event.question.view.form event.question form New
event_question_view_list event.question.view.list event.question list New
event_question_view_list_add event.question.view.list.add event.question list Inherits event.event_question_view_list
event_question_view_search event.question.view.search event.question search New
event_registration_answer_view_graph event.registration.answer.view.graph event.registration.answer graph New
event_registration_answer_view_pivot event.registration.answer.view.pivot event.registration.answer pivot New
event_registration_answer_view_search event.registration.answer.view.search event.registration.answer search New
event_registration_answer_view_tree event.registration.answer.view.list event.registration.answer list New
event_registration_attendee_list event_registration_attendee_list ir.ui.view qweb New
event_registration_report_template_badge event_registration_report_template_badge ir.ui.view qweb New
event_registration_report_template_full_page_ticket event_registration_report_template_full_page_ticket ir.ui.view qweb New
event_registration_report_template_responsive_html_ticket event_registration_report_template_responsive_html_ticket ir.ui.view qweb New
event_registration_view_kanban event.registration.kanban event.registration kanban New
event_registration_view_search_event_specific event.registration.view.search.event.specific event.registration search Inherits view_registration_search
event_report_full_page_ticket_layout event_report_full_page_ticket_layout ir.ui.view qweb New
event_report_template_a6_badge event_report_template_a6_badge ir.ui.view qweb New
event_report_template_badge_card event_report_template_badge_card ir.ui.view qweb New
event_report_template_foldable_badge event_report_template_foldable_badge ir.ui.view qweb New
event_report_template_formatted_event_address event_report_template_formatted_event_address ir.ui.view qweb New
event_report_template_four_per_sheet_badge event_report_template_four_per_sheet_badge ir.ui.view qweb New
event_report_template_full_page_ticket event_report_template_full_page_ticket ir.ui.view qweb New
event_stage_view_form event.stage.view.form event.stage form New
event_stage_view_tree event.stage.view.list event.stage list New
event_tag_category_view_form event.tag.category.view.form event.tag.category form New
event_tag_category_view_tree event.tag.category.view.list event.tag.category list New
event_tag_view_form event.tag.view.form event.tag form New
event_tag_view_tree event.tag.view.list event.tag list New
event_type_ticket_view_form event.type.ticket.view.form event.type.ticket form Inherits event_type_ticket_view_form_from_type
event_type_ticket_view_form_from_type event.type.ticket.view.form.from.type event.type.ticket form New
event_type_ticket_view_tree event.type.ticket.view.list event.type.ticket list Inherits event_type_ticket_view_tree_from_type
event_type_ticket_view_tree_from_type event.type.ticket.view.list.from.type event.type.ticket list New
event_type_view_search event.type.search event.type search New
res_config_settings_view_form res.config.settings.view.form.inherit.event res.config.settings form Inherits mail.res_config_settings_view_form
res_partner_view_tree view.res.partner.form.event.inherited res.partner form Inherits base.view_partner_form
view_event_calendar event.event.calendar event.event calendar New
view_event_form event.event.form event.event form New
view_event_kanban event.event.kanban event.event kanban New
view_event_mail_form event.mail.form event.mail form New
view_event_mail_tree event.mail.list event.mail list New
view_event_registration_calendar event.registration.calendar event.registration calendar New
view_event_registration_form event.registration.form event.registration form New
view_event_registration_graph event.registration.graph event.registration graph New
view_event_registration_pivot event.registration.pivot event.registration pivot New
view_event_registration_tree event.registration.list event.registration list New
view_event_search event.event.search event.event search New
view_event_slot_calendar event.slot.calendar event.slot calendar New
view_event_slot_form event.slot.form event.slot form New
view_event_slot_multi_create_form event.slot.form event.slot form New
view_event_slot_tree event.slot.list event.slot list New
view_event_tree event.event.list event.event list New
view_event_type_form event.type.form event.type form New
view_event_type_tree event.type.list event.type list New
view_registration_search event.registration.search event.registration search New
HTTP endpoints (3)
Route(s)HandlerAuthTypeMethodsFlags
/event/<model("event.event"):event>/ics EventController.event_ics_file public http ALL sudo website
/event/<int:event_id>/my_tickets EventController.event_my_tickets public http ALL sudo
/event/init_barcode_interface EventController.init_barcode_interface user jsonrpc ALL
Models touched (19)

New fields (48)
  • active Boolean
    default=True
  • address_id Many2one → res.partner
    check_company=True default=<expr> string='Venue' tracking=True args: 'res.partner'
  • address_inline Char
    compute='_compute_address_inline' compute_sudo=True string='Venue (formatted for one line uses)'
  • address_search Many2one → res.partner
    compute='_compute_address_search' search='_search_address_search' string='Address' args: 'res.partner'
  • badge_format Selection
    default='A6' required=True selection=[('A4_french_fold', 'A4 foldable'), ('A6', 'A6'), ('four_per_sheet', '4 per sheet')] string='Badge Dimension'
  • badge_image Image
    max_height=1024 max_width=1024 args: 'Badge Background'
  • company_id Many2one → res.company
    change_default=True default=<expr> required=False string='Company' args: 'res.company'
  • country_id Many2one → res.country
    readonly=False related='address_id.country_id' store=True args: 'res.country', 'Country'
  • date_begin Datetime
    help='When the event is scheduled to take place (expressed in your local timezone on the form view).' required=True string='Start Date' tracking=True
  • date_end Datetime
    required=True string='End Date' tracking=True
  • date_tz Selection
    compute='_compute_date_tz' help='Indicates the timezone in which the event dates/times will be displayed on the website.' precompute=True readonly=False required=True store=True string='Display Timezone' args: _tz_get
  • description Html
    default=_default_description sanitize_attributes=False sanitize_form=False string='Description' translate=html_translate
  • event_mail_ids One2many → event.mail
    compute='_compute_event_mail_ids' copy=True readonly=False store=True string='Mail Schedule' args: 'event.mail', 'event_id'
  • event_registrations_open Boolean
    compute='_compute_event_registrations_open' compute_sudo=True help='Registrations are open if:\n- the event is not ended or not cancelled\n- there are seats available on event\n- the tickets are sellable (if ticketing is used)' args: 'Registration open'
  • event_registrations_sold_out Boolean
    compute='_compute_event_registrations_sold_out' compute_sudo=True help='The event is sold out if no more seats are available on event. If ticketing is used and all tickets are sold out, the event will be sold out.' args: 'Sold Out'
  • event_registrations_started Boolean
    compute='_compute_event_registrations_started' help='registrations have started if the current datetime is after the earliest starting date of tickets.' args: 'Registrations started'
  • event_share_url Char
    compute='_compute_event_share_url' string='Event Share URL'
  • event_slot_count Integer
    compute='_compute_event_slot_count' args: 'Slots Count'
  • event_slot_ids One2many → event.slot
    copy=True args: 'event.slot', 'event_id', 'Slots'
  • event_ticket_ids One2many → event.event.ticket
    compute='_compute_event_ticket_ids' copy=True precompute=True readonly=False store=True string='Event Ticket' args: 'event.event.ticket', 'event_id'
  • event_type_id Many2one → event.type
    help='Choose a template to auto-fill tickets, communications, descriptions and other fields.' ondelete='set null' string='Template' args: 'event.type'
  • event_url Char
    compute='_compute_event_url' help='Link where the online event will take place.' readonly=False store=True string='Online Event URL'
  • general_question_ids Many2many → event.question
    domain=[('once_per_order', '=', True)] string='General Questions' args: 'event.question', 'event_event_event_question_rel'
  • is_finished Boolean
    compute='_compute_is_finished' search='_search_is_finished'
  • is_multi_slots Boolean
    copy=True help='Allow multiple time slots. The communications, the maximum number of attendees and the maximum number of tickets registrations are defined for each time slot instead of the whole event.' args: 'Is Multi Slots'
  • is_one_day Boolean
    compute='_compute_field_is_one_day'
  • is_ongoing Boolean
    compute='_compute_is_ongoing' search='_search_is_ongoing' args: 'Is Ongoing'
  • kanban_state Selection
    compute='_compute_kanban_state' copy=False default='normal' readonly=False store=True tracking=True args: [('normal', 'In Progress'), ('done', 'Ready for Next Stage'), ('blocked', 'Blocked'), ('cancel', 'Cancelled')]
  • lang Selection
    help='All the communication emails sent to attendees will be translated in this language.' string='Language' args: _lang_get
  • name Char
    required=True string='Event' translate=True
  • note Html
    compute='_compute_note' readonly=False store=True string='Note'
  • organizer_id Many2one → res.partner
    check_company=True default=<expr> string='Organizer' tracking=True args: 'res.partner'
  • question_ids Many2many → event.question
    compute='_compute_question_ids' precompute=True readonly=False store=True string='Questions' args: 'event.question', 'event_event_event_question_rel'
  • registration_ids One2many → event.registration
    string='Attendees' args: 'event.registration', 'event_id'
  • registration_properties_definition PropertiesDefinition
    args: 'Registration Properties'
  • seats_available Integer
    compute='_compute_seats' readonly=True store=False string='Available Seats'
  • seats_limited Boolean
    compute='_compute_seats_limited' precompute=True readonly=False required=True store=True args: 'Limit Attendees'
  • seats_max Integer
    compute='_compute_seats_max' help='For each event you can define a maximum registration of seats(number of attendees), above this number the registrations are not accepted. If the event has multiple slots, this maximum number is applied per slot.' readonly=False store=True string='Maximum Attendees'
  • seats_reserved Integer
    compute='_compute_seats' readonly=True store=False string='Number of Registrations'
  • seats_taken Integer
    compute='_compute_seats' readonly=True store=False string='Number of Taken Seats'
  • seats_used Integer
    compute='_compute_seats' readonly=True store=False string='Number of Attendees'
  • specific_question_ids Many2many → event.question
    domain=[('once_per_order', '=', False)] string='Specific Questions' args: 'event.question', 'event_event_event_question_rel'
  • stage_id Many2one → event.stage
    copy=False default=_get_default_stage_id group_expand='_read_group_expand_full' ondelete='restrict' tracking=True args: 'event.stage'
  • start_sale_datetime Datetime
    compute='_compute_start_sale_date' help='If ticketing is used, contains the earliest starting sale date of tickets.' args: 'Start sale date'
  • tag_ids Many2many → event.tag
    compute='_compute_tag_ids' readonly=False store=True string='Tags' args: 'event.tag'
  • ticket_instructions Html
    compute='_compute_ticket_instructions' help='This information will be printed on your tickets.' readonly=False store=True translate=True args: 'Ticket Instructions'
  • use_barcode Boolean
    compute='_compute_use_barcode'
  • user_id Many2one → res.users
    default=<expr> string='Responsible' tracking=True args: 'res.users'
Public methods (5)
  • action_open_slot_calendar(self)
  • action_set_done(self)
    Action which will move the events into the first next (by sequence) stage defined as "Ended" (if they are not already in an ended stage)
  • copy_data(self, default=None)
  • default_get(self, fields)
    @api.model
  • get_kiosk_url(self)

New fields (16)
  • color Char
    default='#875A7B' args: 'Color'
  • company_id Many2one → res.company
    related='event_id.company_id' args: 'res.company'
  • end_sale_datetime Datetime
    string='Registration End'
  • event_id Many2one → event.event
    index=True ondelete='cascade' required=True string='Event' args: 'event.event'
  • event_type_id Many2one
    ondelete='set null' required=False
  • is_expired Boolean
    compute='_compute_is_expired' string='Is Expired'
  • is_launched Boolean
    compute='_compute_is_launched' string='Are sales launched'
  • is_sold_out Boolean
    compute='_compute_is_sold_out' help='Whether seats are not available for this ticket.' args: 'Sold Out'
  • limit_max_per_order Integer
    default=0 help='Maximum of this product per order.\nSet to 0 to ignore this rule' string='Limit per Order'
  • registration_ids One2many → event.registration
    string='Registrations' args: 'event.registration', 'event_ticket_id'
  • sale_available Boolean
    compute='_compute_sale_available' compute_sudo=True help='Whether it is possible to sell these tickets' string='Is Available'
  • seats_available Integer
    compute='_compute_seats' store=False string='Available Seats'
  • seats_reserved Integer
    compute='_compute_seats' store=False string='Reserved Seats'
  • seats_taken Integer
    compute='_compute_seats' store=False string='Taken Seats'
  • seats_used Integer
    compute='_compute_seats' store=False string='Used Seats'
  • start_sale_datetime Datetime
    string='Registration Start'
Public methods (1)
  • default_get(self, fields)
    @api.model

New fields (15)
  • error_datetime Datetime
    args: 'Last Error'
  • event_id Many2one → event.event
    index=True ondelete='cascade' required=True string='Event' args: 'event.event'
  • interval_nbr Integer
    default=1 args: 'Interval'
  • interval_type Selection
    default='before_event' help='Indicates when the communication is sent. If the event has multiple slots, the interval is related to each time slot instead of the whole event.' required=True string='Trigger ' args: [('after_sub', 'After each registration'), ('before_event', 'Before the event starts'), ('after_event_start', 'After the event started'), ('after_event', 'After the event ended'), ('before_event_end', 'Before the event ends')]
  • interval_unit Selection
    default='hours' required=True string='Unit' args: [('now', 'Immediately'), ('hours', 'Hours'), ('days', 'Days'), ('weeks', 'Weeks'), ('months', 'Months')]
  • last_registration_id Many2one → event.registration
    args: 'event.registration', 'Last Attendee'
  • 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
    help='Communication related to event registrations' args: 'event.mail.registration', 'scheduler_id'
  • mail_slot_ids One2many → event.mail.slot
    help='Slot-based communication' args: 'event.mail.slot', 'scheduler_id'
  • mail_state Selection
    compute='_compute_mail_state' string='Global communication Status' args: [('running', 'Running'), ('scheduled', 'Scheduled'), ('sent', 'Sent'), ('error', 'Error'), ('cancelled', 'Cancelled')]
  • notification_type Selection
    compute='_compute_notification_type' string='Send' args: [('mail', 'Mail')]
  • scheduled_date Datetime
    compute='_compute_scheduled_date' store=True args: 'Schedule Date'
  • sequence Integer
    args: 'Display order'
  • template_ref Reference
    ondelete={'mail.template': 'cascade'} required=True selection=[('mail.template', 'Mail')] string='Template'
Public methods (3)
  • execute(self)
  • run(self, autocommit=False)
    @api.model
    Backward compatible method, notably if crons are not updated when migrating for some reason.
  • schedule_communications(self, autocommit=False)
    @api.model

New fields (4)
  • mail_sent Boolean
    args: 'Mail Sent'
  • registration_id Many2one → event.registration
    index=True ondelete='cascade' required=True args: 'event.registration', 'Attendee'
  • scheduled_date Datetime
    compute='_compute_scheduled_date' store=True args: 'Scheduled Time'
  • scheduler_id Many2one → event.mail
    index=True ondelete='cascade' required=True args: 'event.mail', 'Mail Scheduler'
Public methods (1)
  • execute(self)

New fields (6)
  • event_slot_id Many2one → event.slot
    ondelete='cascade' required=True args: 'event.slot', 'Slot'
  • last_registration_id Many2one → event.registration
    args: 'event.registration', 'Last Attendee'
  • mail_count_done Integer
    copy=False readonly=True args: '# Sent'
  • mail_done Boolean
    copy=False readonly=True args: 'Sent'
  • scheduled_date Datetime
    compute='_compute_scheduled_date' store=True args: 'Schedule Date'
  • scheduler_id Many2one → event.mail
    index=True ondelete='cascade' required=True args: 'event.mail', 'Mail Scheduler'
Public methods (0)

No public methods.

New fields (12)
  • active Boolean
    default=True args: 'Active'
  • answer_ids One2many → event.question.answer
    copy=True args: 'event.question.answer', 'question_id', 'Answers'
  • event_count Integer
    compute='_compute_event_count' args: '# Events'
  • event_ids Many2many → event.event
    copy=False string='Events' args: 'event.event'
  • event_type_ids Many2many → event.type
    copy=False string='Event Types' args: 'event.type'
  • is_default Boolean
    help='Include by default in new events.' args: 'Default question'
  • is_mandatory_answer Boolean
    args: 'Mandatory Answer'
  • is_reusable Boolean
    compute='_compute_is_reusable' default=True help='Allow this question to be selected and reused for any future event. Always true for default questions.' store=True args: 'Is Reusable'
  • once_per_order Boolean
    help="Check this for order-level questions (e.g., 'Company Name') where the answer is the same for everyone." args: 'Ask once per order'
  • question_type Selection
    default='simple_choice' required=True string='Question Type' args: [('simple_choice', 'Selection'), ('text_box', 'Text Input'), ('name', 'Name'), ('email', 'Email'), ('phone', 'Phone'), ('company_name', 'Company')]
  • sequence Integer
    default=10
  • title Char
    required=True translate=True
Public methods (3)
  • action_event_view(self)
  • action_view_question_answers(self)
    Allow analyzing the attendees answers to event questions in a convenient way: - A graph view showing counts of each suggestion for simple_choice questions (Along with secondary pivot and list views) - A list view showing textual answers values for text_box questions.
  • write(self, vals)
    We add a check to prevent changing the question_type of a question that already has answers. Indeed, it would mess up the event.registration.answer (answer type not matching the question type).

New fields (3)
  • name Char
    required=True translate=True args: 'Answer'
  • question_id Many2one → event.question
    index=True ondelete='cascade' required=True args: 'event.question'
  • sequence Integer
    default=10
Public methods (0)

No public methods.

New fields (26)
  • active Boolean
    default=True
  • barcode Char
    copy=False default=<expr> readonly=True string='Barcode'
  • company_id Many2one → res.company
    readonly=False related='event_id.company_id' store=True string='Company' args: 'res.company'
  • company_name Char
    compute='_compute_company_name' readonly=False store=True string='Company Name' tracking=5
  • date_closed Datetime
    compute='_compute_date_closed' readonly=False store=True string='Attended Date'
  • email Char
    compute='_compute_email' readonly=False store=True string='Email' tracking=3
  • event_begin_date Datetime
    compute='_compute_event_begin_date' search='_search_event_begin_date' args: 'Event Start Date'
  • event_date_range Char
    compute='_compute_date_range' args: 'Date Range'
  • event_end_date Datetime
    compute='_compute_event_end_date' search='_search_event_end_date' args: 'Event End Date'
  • event_id Many2one → event.event
    index=True required=True string='Event' tracking=True args: 'event.event'
  • event_organizer_id Many2one
    readonly=True related='event_id.organizer_id' string='Event Organizer'
  • event_slot_id Many2one → event.slot
    domain="[('event_id', '=', event_id)]" index='btree_not_null' ondelete='restrict' string='Slot' tracking=True args: 'event.slot'
  • event_ticket_id Many2one → event.event.ticket
    index='btree_not_null' ondelete='restrict' string='Ticket Type' tracking=True args: 'event.event.ticket'
  • event_user_id Many2one
    readonly=True related='event_id.user_id' string='Event Responsible'
  • is_multi_slots Boolean
    related='event_id.is_multi_slots' string='Is Event Multi Slots'
  • mail_registration_ids One2many → event.mail.registration
    readonly=True string='Scheduler Emails' args: 'event.mail.registration', 'registration_id'
  • name Char
    compute='_compute_name' index='trigram' readonly=False store=True string='Attendee Name' tracking=2
  • partner_id Many2one → res.partner
    index='btree_not_null' string='Booked by' tracking=1 args: 'res.partner'
  • phone Char
    compute='_compute_phone' readonly=False store=True string='Phone' tracking=4
  • registration_answer_choice_ids One2many → event.registration.answer
    domain=[('question_type', '=', 'simple_choice')] string='Attendee Selection Answers' args: 'event.registration.answer', 'registration_id'
  • registration_answer_ids One2many → event.registration.answer
    string='Attendee Answers' args: 'event.registration.answer', 'registration_id'
  • registration_properties Properties
    copy=True definition='event_id.registration_properties_definition' args: 'Properties'
  • state Selection
    copy=False default='open' help='Unconfirmed: registrations in a pending state waiting for an action (specific case, notably with sale status)\nRegistered: registrations considered taken by a client\nAttended: registrations for which the attendee attended the event\nCancelled: registrations cancelled manually' readonly=True string='Status' tracking=6 args: [('draft', 'Unconfirmed'), ('open', 'Registered'), ('done', 'Attended'), ('cancel', 'Cancelled')]
  • utm_campaign_id Many2one → utm.campaign
    index=True ondelete='set null' args: 'utm.campaign', 'Campaign'
  • utm_medium_id Many2one → utm.medium
    index=True ondelete='set null' args: 'utm.medium', 'Medium'
  • utm_source_id Many2one → utm.source
    index=True ondelete='set null' args: 'utm.source', 'Source'
Public methods (9)
  • action_cancel(self)
  • action_confirm(self)
  • action_send_badge_email(self)
    Open a window to compose an email, with the template - 'event_badge' message loaded by default
  • action_set_done(self)
    Close Registration
  • action_set_draft(self)
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields)
    @api.model
  • register_attendee(self, barcode, event_id)
    @api.model
  • write(self, vals)

New fields (7)
  • event_id Many2one → event.event
    related='registration_id.event_id' args: 'event.event'
  • partner_id Many2one → res.partner
    related='registration_id.partner_id' args: 'res.partner'
  • question_id Many2one → event.question
    domain="[('event_ids', 'in', event_id)]" ondelete='restrict' required=True args: 'event.question'
  • question_type Selection
    related='question_id.question_type'
  • registration_id Many2one → event.registration
    index=True ondelete='cascade' required=True args: 'event.registration'
  • value_answer_id Many2one → event.question.answer
    string='Suggested answer' args: 'event.question.answer'
  • value_text_box Text
    args: 'Text answer'
Public methods (0)

No public methods.

New fields (14)
  • color Integer
    default=0 args: 'Color'
  • date Date
    required=True args: 'Date'
  • date_tz Selection
    related='event_id.date_tz'
  • end_datetime Datetime
    compute='_compute_datetimes' store=True args: 'End Datetime'
  • end_hour Float
    help='Expressed in the event timezone.' required=True args: 'Ending Hour'
  • event_id Many2one → event.event
    index=True ondelete='cascade' required=True args: 'event.event', 'Event'
  • is_sold_out Boolean
    compute='_compute_is_sold_out' help='Whether seats are sold out for this slot.' args: 'Sold Out'
  • registration_ids One2many → event.registration
    string='Attendees' args: 'event.registration', 'event_slot_id'
  • seats_available Integer
    compute='_compute_seats' readonly=True store=False string='Available Seats'
  • seats_reserved Integer
    compute='_compute_seats' readonly=True store=False string='Number of Registrations'
  • seats_taken Integer
    compute='_compute_seats' readonly=True store=False string='Number of Taken Seats'
  • seats_used Integer
    compute='_compute_seats' readonly=True store=False string='Number of Attendees'
  • start_datetime Datetime
    compute='_compute_datetimes' store=True args: 'Start Datetime'
  • start_hour Float
    help='Expressed in the event timezone.' required=True args: 'Starting Hour'
Public methods (0)

No public methods.

New fields (5)
  • description Text
    string='Stage description' translate=True
  • fold Boolean
    default=False string='Folded in Kanban'
  • name Char
    required=True string='Stage Name' translate=True
  • pipe_end Boolean
    default=False help='Events will automatically be moved into this stage when they are finished. The event moved into this stage will automatically be set as green.' string='End Stage'
  • sequence Integer
    default=1 args: 'Sequence'
Public methods (0)

No public methods.

New fields (5)
  • category_id Many2one → event.tag.category
    index=True ondelete='cascade' required=True string='Category' args: 'event.tag.category'
  • category_sequence Integer
    related='category_id.sequence' store=True string='Category Sequence'
  • color Integer
    default=<expr> help='Tag color. No color means no display in kanban or front-end, to distinguish internal tags from public categorization tags.' string='Color Index'
  • name Char
    required=True translate=True args: 'Name'
  • sequence Integer
    default=0 args: 'Sequence'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    required=True translate=True args: 'Name'
  • sequence Integer
    default=_default_sequence args: 'Sequence'
  • tag_ids One2many → event.tag
    string='Tags' args: 'event.tag', 'category_id'
Public methods (0)

No public methods.

New fields (11)
  • default_timezone Selection
    default=<expr> string='Timezone' args: _tz_get
  • event_type_mail_ids One2many → event.type.mail
    default=_default_event_mail_type_ids string='Mail Schedule' args: 'event.type.mail', 'event_type_id'
  • event_type_ticket_ids One2many → event.type.ticket
    string='Tickets' args: 'event.type.ticket', 'event_type_id'
  • has_seats_limitation Boolean
    args: 'Limited Seats'
  • name Char
    required=True translate=True args: 'Event Template'
  • note Html
    string='Note'
  • question_ids Many2many → event.question
    copy=True default=_default_question_ids string='Questions' args: 'event.question'
  • seats_max Integer
    compute='_compute_seats_max' help='It will select this default maximum value when you choose this event' readonly=False store=True args: 'Maximum Registrations'
  • sequence Integer
    default=10
  • tag_ids Many2many → event.tag
    string='Tags' args: 'event.tag'
  • ticket_instructions Html
    help='This information will be printed on your tickets.' translate=True args: 'Ticket Instructions'
Public methods (0)

No public methods.

New fields (6)
  • event_type_id Many2one → event.type
    ondelete='cascade' required=True string='Event Type' args: 'event.type'
  • interval_nbr Integer
    default=1 args: 'Interval'
  • interval_type Selection
    default='before_event' required=True string='Trigger' args: [('after_sub', 'After each registration'), ('before_event', 'Before the event starts'), ('after_event_start', 'After the event started'), ('after_event', 'After the event ended'), ('before_event_end', 'Before the event ends')]
  • interval_unit Selection
    default='hours' required=True string='Unit' args: [('now', 'Immediately'), ('hours', 'Hours'), ('days', 'Days'), ('weeks', 'Weeks'), ('months', 'Months')]
  • notification_type Selection
    compute='_compute_notification_type' string='Send' args: [('mail', 'Mail')]
  • template_ref Reference
    ondelete={'mail.template': 'cascade'} required=True selection=[('mail.template', 'Mail')] string='Template'
Public methods (0)

No public methods.

New fields (6)
  • description Text
    help='A description of the ticket that you want to communicate to your customers.' translate=True args: 'Description'
  • event_type_id Many2one → event.type
    ondelete='cascade' required=True string='Event Category' args: 'event.type'
  • name Char
    default=<expr> required=True string='Name' translate=True
  • seats_limited Boolean
    compute='_compute_seats_limited' readonly=True store=True string='Limit Attendees'
  • seats_max Integer
    help='Define the number of available tickets. If you have too many registrations you will not be able to sell tickets anymore. Set 0 to ignore this rule set as unlimited.' string='Maximum Attendees'
  • sequence Integer
    default=10 args: 'Sequence'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • unlink(self)

New fields (13)
  • barcode_nomenclature_id Many2one → barcode.nomenclature
    readonly=False related='company_id.nomenclature_id' args: 'barcode.nomenclature'
  • google_maps_static_api_key Char
    compute='_compute_maps_static_api_key' config_parameter='google_maps.signed_static_api_key' readonly=False store=True args: 'Google Maps API key'
  • google_maps_static_api_secret Char
    compute='_compute_maps_static_api_secret' config_parameter='google_maps.signed_static_api_secret' readonly=False store=True args: 'Google Maps API secret'
  • module_event_booth Boolean
    args: 'Booth Management'
  • module_event_sale Boolean
    args: 'Tickets with Sale'
  • module_pos_event Boolean
    args: 'Tickets with PoS'
  • module_website_event_exhibitor Boolean
    args: 'Advanced Sponsors'
  • module_website_event_sale Boolean
    args: 'Online Ticketing'
  • module_website_event_track Boolean
    args: 'Tracks and Agenda'
  • module_website_event_track_live Boolean
    args: 'Live Mode'
  • module_website_event_track_quiz Boolean
    args: 'Quiz on Tracks'
  • use_event_barcode Boolean
    config_parameter='event.use_event_barcode' help='Enable or Disable Event Barcode functionality.' string='Use Event Barcode'
  • use_google_maps_static_api Boolean
    default=_default_use_google_maps_static_api args: 'Google Maps static API'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (3)
  • event_count Integer
    compute='_compute_event_count' groups='event.group_event_registration_desk' args: '# Events'
  • static_map_url Char
    compute='_compute_static_map_url'
  • static_map_url_is_valid Boolean
    compute='_compute_static_map_url_is_valid'
Public methods (1)
  • action_event_view(self)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…