TIP: You can type at any time to perform a new search.

Security findings

Repository
odoo/odoo · module folder
Module version
1.9
Category
Marketing/Events
Folder size
14.22 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
https://www.odoo.com/app/events
Last tracking update
2026-10-05 00:19:50
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Xavier Morel, Raphael Collet, Thibault Delavallée, odoo, Odoo Translation Bot, Christophe Matthieu, Aaron Bohy, Géry Debongnie, Jeremy Kersten, Jorge Pinna Puissant, Julien Castiaux, Xavier-Do, Romeo Fragomeli, Victor Feyens, Adrien Dieudonné, Julien Mougenot, David Beguin, Tiffany Chang (tic), Gorash, Florian Charlier, luvi, Renaud Thiry, Victor Piryns (pivi), amdi-odoo, Pierre-Yves Dufays, Maruan Aguerdouh (magm), Dylan Kiss (dyki), Chong Wang (cwg), adsh-odoo, Harsh Shah, Pierre Pulinckx, Bastien PIERRE, Michaël Mattiello, Krzysztof Magusiak (krma), Tyler Landivar (tylan), nsirjacobs, desh, mojem, defl, bikh-odoo, josm-odoo, Julien Launois (jula), adip-odoo, Yagnik ✗ (yagp), Yash Tiwari (Yatiw), alan-odoo, Kadam Darji, Farah (ahmfa), ELCO, jsum-odoo, chpa-odoo, stefanorigano (sri), Frantisek Binovsky, Francois Vasamillet (frva), supr-odoo, Julien Piron, Jean Schoenlaub, pusu-odoo
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
event_booth, event_crm, event_product, event_sms, hr_skills_event, marketing_card_event, mass_mailing_event, mass_mailing_event_sms, 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 info_outline

Views touched (67)
XML IDNameModelTypeStatus
attendee_list attendee_list ir.ui.view qweb New
digest_digest_view_form digest.digest.view.form.inherit.event.registration digest.digest form Inherits digest.digest_digest_view_form
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
portal_my_events My Events ir.ui.view qweb 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 (4)
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
/my/events, /my/events/page/<int:page> EventPortal.portal_my_events user http ALL sudo website
Models touched (20)

New fields (2)
  • kpi_nbr_of_registrations Boolean
    args: 'Registrations'
  • kpi_nbr_of_registrations_value Integer
    compute='_compute_kpi_nbr_of_registrations_value'
Public methods (0)

No public methods.

New fields (48)
  • active Boolean
    default=True
  • address_id Many2one → res.partner
    check_company=True default=<expr> index=True string='Venue' tracking=True args: 'res.partner'
  • 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> index='btree_not_null' required=False string='Company' args: 'res.company'
  • contact_address_inline Char
    related='address_id.contact_address_inline' string='Venue (formatted for one line uses)'
  • 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 Registrations'
  • 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 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'
  • 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 (4)
  • 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)
  • default_get(self, fields)
    @api.model
  • get_kiosk_url(self)

New fields (17)
  • 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'
  • entry_limit Integer
    default=0 help='Enable multi-entry tickets\n- Set to 0 or 1 to disable.\n- Enter 2 or more to define the maximum number of allowed entries.' string='Entry Limit'
  • 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
    index=True 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 (29)
  • 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' store=True 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'
  • main_registration_id Many2one → event.registration
    index='btree_not_null' ondelete='restrict' string='Main Registration' args: 'event.registration'
  • 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'
  • remaining_entries Integer
    compute='_compute_remaining_entries' string='Remaining Entries' tracking=True
  • 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')]
  • ticket_entry_limit Integer
    related='event_ticket_id.entry_limit' string='Initial Entry Limit' tracking=True
  • 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 (12)
  • action_attend_event(self)
  • action_cancel(self)
  • action_cancel_last_sub_registration(self)
    Cancel the last attendance of a registration to increase the amount it can be scanned by one. :raises: UserError if one of the registrations is a sub-registrations, this method is meant to be used only on main registrations.
  • action_confirm(self)
  • action_confirm_and_reset(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)]" index=True 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: 'Limit Registrations'
  • 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 Seats'
  • 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…

Loading…