TIP: You can type at any time to perform a new search.
Calendar
calendar · odoo/odoo
Security findings
- Repository
- odoo/odoo · module folder
- Module version
- 1.1
- Category
- Productivity/Calendar
- Folder size
- 10.0 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- None
- 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, Denis Ledoux, Aaron Bohy, Géry Debongnie, Jorge Pinna Puissant, Aurélien Warnon, Xavier-Do, Romeo Fragomeli, Victor Feyens, Adrien Dieudonné, Sébastien Theys, Julien Mougenot, David Beguin, Tiffany Chang (tic), Gorash, Pierre Paridans, Romain Estievenart, Didier (did), Florian Charlier, luvi, Renaud Thiry, tsm-odoo, Victor Piryns (pivi), Thomas Becquevort (thbe), amdi-odoo, Pierre-Yves Dufays, Andrew Gavgavian, Dylan Kiss (dyki), Chong Wang (cwg), Brieuc-brd, Sarah Bellefroid, Noe Antoine, omra-odoo, Zelong Lin, sesn-odoo, aktr-odoo, Maryam Kia, jorv-odoo, dhba, adsh-odoo, Alex Kühn, nihp-odoo, mano-odoo, Harsh Shah, guce, Pierre Pulinckx, Bastien PIERRE, Michaël Mattiello, pish-odoo, Krzysztof Magusiak (krma), krip-odoo, Sylvio Poliart (sypol), mojem, pajo, akha, jayp-odoo, Julien Launois (jula), adip-odoo, Jérôme Belpaire, Yagnik ✗ (yagp), assh-odoo, Omar Khalil (omkha), Jan Suhr, alan-odoo, Kadam Darji, ibo-odoo, Farah (ahmfa), MostafaTwfiq, Julien Carion, ELCO, chpa-odoo, Oussema Heni, stefanorigano (sri), Frantisek Binovsky, claireclan, Julien Piron, Jean Schoenlaub, SebVrc, Dario Liotta (dalio), Sylsee
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- calendar_sms, crm, google_calendar, hr_calendar, hr_recruitment, microsoft_calendar, test_discuss_full
- Description
This is a full-featured calendar system. ======================================== It supports: ------------ - Calendar of events - Recurring events If you need to manage your meetings, you should install the CRM module.
Code Analysis
Views touched (25)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
calendar_alarm_view_form |
calendar.alarm.form | calendar.alarm | form | New |
calendar_alarm_view_kanban |
calendar.alarm.view.kanban | calendar.alarm | kanban | New |
calendar_alarm_view_search |
calendar.alarm.view.search | calendar.alarm | search | New |
calendar_calendar_view_form |
calendar.calendar.view.form | calendar.calendar | form | New |
calendar_calendar_view_list |
calendar.calendar.view.list | calendar.calendar | list | New |
calendar_event_archive_or_unlink_wizard_view_form |
calendar.event.archive.or.unlink.wizard.view.form | calendar.event.archive.or.unlink.wizard | form | New |
calendar_event_multi_archive_or_unlink_wizard_view_form |
calendar_event_multi_archive_or_unlink_wizard_view_form | calendar.event.multi.archive.or.unlink.wizard | form | New |
calendar_user_view_form |
calendar.user.view.form | calendar.user | form | New |
invitation_page_anonymous |
Calendar Invitation Page for anonymous users | ir.ui.view | qweb | New |
mail_activity_schedule_view_form |
mail.activity.schedule.inherit.calendar | mail.activity.schedule | calendar | Inherits mail.mail_activity_schedule_view_form |
mail_activity_view_form_popup |
mail.activity.form.inherit.calendar | mail.activity | calendar | Inherits mail.mail_activity_view_form_popup |
message_meeting_activity_done |
message_meeting_activity_done | ir.ui.view | qweb | Inherits mail.message_activity_done |
res_config_settings_view_form |
res.config.settings.view.form.inherit.calendar | res.config.settings | calendar | Inherits base.res_config_settings_view_form |
res_partner_view_form_simplified |
res.partner.view.form.simplified.calendar | res.partner | form | New |
res_users_form_view |
res.users.form.calendar | res.users | calendar | Inherits base.view_users_form |
res_users_form_view_calendars |
res.users.preferences.form.inherit | res.users | form | Inherits base.view_users_form_simple_modif |
res_users_view_form |
res.users.view.form.inherit.calendar | res.users | calendar | Inherits base.view_users_form |
view_calendar_alarm_tree |
calendar.alarm.list | calendar.alarm | list | New |
view_calendar_event_calendar |
calendar.event.calendar | calendar.event | calendar | New |
view_calendar_event_form |
calendar.event.form | calendar.event | form | New |
view_calendar_event_form_quick_create |
calendar.event.form.quick_create | calendar.event | form | New |
view_calendar_event_search |
calendar.event.search | calendar.event | search | New |
view_calendar_event_tree |
calendar.event.list | calendar.event | list | New |
view_calendar_event_type_tree |
calendar.event.type | calendar.event.type | list | New |
view_partners_form |
res_partner.view.form.calendar | res.partner | calendar | Inherits base.view_partner_form |
HTTP endpoints (10)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
/calendar/meeting/accept |
CalendarController.accept_meeting |
calendar | http | POST | sudo |
/calendar/recurrence/accept |
CalendarController.accept_recurrence |
calendar | http | ALL | sudo |
/calendar/ics/<int:calendar_event_id>/<string:access_token> |
CalendarController.calendar_get_ics_file |
public | http | ALL | sudo website |
/calendar/meeting/join |
CalendarController.calendar_join_meeting |
user | http | ALL | sudo website |
/calendar/join_videocall/<string:access_token> |
CalendarController.calendar_join_videocall |
public | http | ALL | sudo |
/calendar/meeting/decline |
CalendarController.decline_meeting |
calendar | http | POST | sudo |
/calendar/recurrence/decline |
CalendarController.decline_recurrence |
calendar | http | ALL | sudo |
/calendar/notify |
CalendarController.notify |
user | jsonrpc | ALL | |
/calendar/notify_ack |
CalendarController.notify_ack |
user | jsonrpc | ALL | sudo |
/calendar/meeting/view |
CalendarController.view_meeting |
calendar | http | ALL | sudo |
Models touched (20)
New fields (8)
-
alarm_typeSelectiondefault='email'required=Truestring='Type' args: [('notification', 'Notification'), ('email', 'Email')] -
bodyTexthelp='Additional message that would be sent with the notification for the reminder' args: 'Additional Message' -
durationIntegerdefault=1required=True args: 'Remind Before' -
duration_minutesIntegercompute='_compute_duration_minutes'search='_search_duration_minutes'store=True args: 'Duration in minutes' -
intervalSelectiondefault='hours'required=True args: list(_interval_selection.items()), 'Unit' -
mail_template_idMany2one → mail.templatecompute='_compute_mail_template_id'domain=[('model', 'in', ['calendar.attendee'])]help='Template used to render mail reminder content.'readonly=Falsestore=Truestring='Email Template' args: 'mail.template' -
nameCharrequired=Truetranslate=True args: 'Name' -
notify_responsibleBooleandefault=Falsehelp='When activated, the event organizer will also receive this reminder.' args: 'Notify Responsible'
No public methods.
New fields (0)
No new fields.
Public methods (3)-
do_check_alarm_for_one_date(self, one_date, event, event_maxdelta, in_the_next_X_seconds, alarm_type, after=False, missing=False)Search for some alarms in the interval of time determined by some parameters (after, in_the_next_X_seconds, ...) :param one_date: date of the event to check (not the same that in the event browse if recurrent) :param event: Event browse record :param event_maxdelta: biggest duration from alarms for this event :param in_the_next_X_seconds: looking in the future (in seconds) :param after: if not False: will return alert if after this date (date as string - todo: change in master) :param missing: if not False: will return alert even if we are too late :param notif: Looking for type notification :param mail: looking for type email -
do_notif_reminder(self, alert) -
get_next_notif(self)@api.model
New fields (10)
-
access_tokenChardefault=_default_access_tokengroups='base.group_system' args: 'Invitation Token' -
availabilitySelectionreadonly=True args: [('free', 'Available'), ('busy', 'Busy')], 'Available/Busy' -
common_nameCharcompute='_compute_common_name'store=True args: 'Common name' -
emailCharrelated='partner_id.email' args: 'Email' -
event_idMany2one → calendar.eventindex=Trueondelete='cascade'required=True args: 'calendar.event', 'Meeting linked' -
mail_tzSelectioncompute='_compute_mail_tz'help='Timezone used for displaying time in the mail template' args: _tz_get -
partner_idMany2one → res.partnerindex=Trueondelete='cascade'readonly=Truerequired=True args: 'res.partner', 'Attendee' -
phoneCharrelated='partner_id.phone' args: 'Phone' -
recurrence_idMany2one → calendar.recurrencerelated='event_id.recurrence_id' args: 'calendar.recurrence' -
stateSelectiondefault='needsAction'string='Status' args: STATE_SELECTION
-
copy(self, default=None) -
create(self, vals_list)@api.model_create_multi -
do_accept(self)Marks event invitation as Accepted. -
do_decline(self)Marks event invitation as Declined. -
do_tentative(self)Makes event invitation as Tentative. -
unlink(self) -
write(self, vals)
New fields (11)
-
calendar_default_privacySelectiondefault=<expr>required=True args: [('public', 'Public by default'), ('private', 'Private by default'), ('confidential', 'Internal users only'), ('members_only', 'Shared Calendar Members Only')] -
calendar_user_idMany2one → calendar.usercompute='_compute_calendar_user'search='_search_calendar_user_id'string='Current Membership Record' args: 'calendar.user' -
calendar_user_idsOne2many → calendar.userdefault=<expr>inverse_name='calendar_id'string='Users' args: 'calendar.user' -
colorIntegerreadonly=Falserelated='calendar_user_id.filter_color' -
event_idsOne2many → calendar.eventargs: 'calendar.event', 'calendar_id', 'Events' -
is_primaryBooleanrelated='calendar_user_id.is_primary' -
nameCharstring='Name' -
owner_idMany2one → res.userscompute='_compute_owner_id' args: 'res.users' -
recurrence_idsOne2many → calendar.recurrenceargs: 'calendar.recurrence', 'calendar_id', 'Recurrences' -
share_user_idsMany2many → res.userscompute='_compute_share_user_ids'domain="[('id', 'not in', [owner_id, uid]), ('share', '=', False)]"inverse='_inverse_share_user_ids'string='Shared with' args: 'res.users' -
user_access_roleSelectionrelated='calendar_user_id.access_role'
-
add_filter_to_list(self) -
unlink(self) -
write(self, vals)Forbid the calendar default privacy update from different users for keeping private events secured.
New fields (73)
-
accepted_countIntegercompute='_compute_attendees_count' -
access_tokenCharcopy=Falsedefault=<expr>readonly=True args: 'Invitation Token' -
activeBooleandefault=Truehelp='If the active field is set to false, it will allow you to hide the event alarm information without removing it.'tracking=True args: 'Active' -
alarm_idsMany2many → calendar.alarmcompute='_compute_alarm_ids'help='Notifications sent to all attendees to remind of the meeting.'ondelete='restrict'readonly=Falsestore=Truestring='Reminders' args: 'calendar.alarm', 'calendar_alarm_calendar_event_rel' -
alldayBooleandefault=False args: 'All Day Duration' -
attendee_idsOne2many → calendar.attendeeargs: 'calendar.attendee', 'event_id', 'Participant' -
attendees_countIntegercompute='_compute_attendees_count' -
awaiting_countIntegercompute='_compute_attendees_count' -
bydaySelectioncompute='_compute_recurrence'readonly=Falsestring='By day' args: BYDAY_SELECTION -
calendar_colorIntegerrelated='calendar_id.color' -
calendar_idMany2one → calendar.calendarcompute='_compute_calendar_id'domain=<expr>index='btree'ondelete='cascade'readonly=Falsestore=Truestring='Calendar' args: 'calendar.calendar' -
categ_idsMany2many → calendar.event.typeargs: 'calendar.event.type', 'meeting_category_rel', 'event_id', 'type_id', 'Tags' -
countIntegercompute='_compute_recurrence'help='Repeat x times'readonly=Falsestring='Number of Repetitions' -
current_attendeeMany2one → calendar.attendeecompute='_compute_current_attendee'search='_search_current_attendee' args: 'calendar.attendee' -
current_statusSelectionreadonly=Falserelated='current_attendee.state'string='Attending?' -
dayIntegercompute='_compute_recurrence'readonly=False args: 'Date of month' -
declined_countIntegercompute='_compute_attendees_count' -
descriptionHtmlhelp='When synchronization with an external calendar is active, this description is synchronized with the one of the associated meeting in that external calendar. Any update will be propagated there and vice versa.' args: 'Description' -
display_descriptionBooleancompute='_compute_display_description' -
display_timeCharcompute='_compute_display_time' args: 'Event Time' -
durationFloatcompute='_compute_duration'readonly=Falsestore=True args: 'Duration' -
effective_privacySelectioncompute='_compute_effective_privacy'help='Whether the event is private, considering the user privacy'search='_search_effective_privacy' args: [('public', 'Public'), ('private', 'Private'), ('confidential', 'Only internal users'), ('members_only', 'Shared Calendar Members Only')], 'Effective Privacy' -
end_typeSelectioncompute='_compute_recurrence'readonly=Falsestring='Recurrence Termination' args: END_TYPE_SELECTION -
event_tzSelectioncompute='_compute_recurrence'readonly=Falsestring='Timezone' args: _tz_get -
follow_recurrenceBooleandefault=False -
friBooleancompute='_compute_recurrence'readonly=False -
google_calendar_urlCharcompute='_compute_google_calendar_url'help='Link to manually add the meeting to Google Calendar' args: 'Google Calendar URL' -
intervalIntegercompute='_compute_recurrence'help='Repeat every (Days/Week/Month/Year)'readonly=Falsestring='Repeat On' -
invalid_email_partner_idsMany2many → res.partnercompute='_compute_invalid_email_partner_ids' args: 'res.partner' -
is_draftBooleanhelp="When True, this field mutes the notifications of the event. It allows to save the event without confirming it and avoids notifying attendees with update messages because some information was unknown at the creation of the event. To prevent event's flow issues, the draft state should be set at the creation of the event and never reset once it is removed."string='Is draft' -
is_highlightedBooleancompute='_compute_is_highlighted'string='Is the Event Highlighted' -
is_organizer_aloneBooleancompute='_compute_is_organizer_alone'help="Check if the organizer is alone in the event, i.e. if the organizer is the only one that hasn't declined\n the event (only if the organizer is not the only attendee)"string='Is the Organizer Alone' -
locationChartracking=True args: 'Location' -
meeting_activity_idsOne2many → mail.activitystring='Meeting Activities' args: 'mail.activity', 'calendar_event_id' -
monBooleancompute='_compute_recurrence'readonly=False -
month_bySelectioncompute='_compute_recurrence'readonly=Falsestring='Option' args: MONTH_BY_SELECTION -
nameCharcopy=Truerequired=True args: 'Meeting Subject' -
notesHtmlargs: 'Notes' -
partner_idMany2one → res.partnerreadonly=Truerelated='user_id.partner_id'string='Scheduled by' args: 'res.partner' -
partner_idsMany2many → res.partnerdefault=_default_partnersfalsy_value_label='Unassigned'string='Attendees' args: 'res.partner', 'calendar_event_res_partner_rel' -
privacySelectionhelp='People to whom this event will be visible.' args: [('public', 'Public'), ('private', 'Private'), ('confidential', 'Only internal users'), ('members_only', 'Calendar Members Only')], 'Privacy' -
privacy_placeholderCharcompute='_compute_privacy_placeholder' -
recurrence_idMany2one → calendar.recurrenceindex='btree_not_null'string='Recurrence Rule' args: 'calendar.recurrence' -
recurrence_updateSelectioncopy=Falsedefault='self_only'help='Choose what to do with other events in the recurrence. Updating All Events is not allowed when dates or time is modified'store=False args: [('self_only', 'This event'), ('future_events', 'This and following events'), ('all_events', 'All events')] -
recurrencyBooleanargs: 'Recurrent' -
res_idMany2oneReferencemodel_field='res_model' args: 'Document ID' -
res_modelCharreadonly=Truerelated='res_model_id.model'store=True args: 'Document Model Name' -
res_model_idMany2one → ir.modelindex=Trueondelete='cascade' args: 'ir.model', 'Document Model' -
res_model_nameCharrelated='res_model_id.name' -
res_recordReferencecompute='_compute_res_record'inverse='_inverse_res_record'selection='_get_model_selection'string='Linked to' -
rruleCharcompute='_compute_recurrence'readonly=False args: 'Recurrent Rule' -
rrule_typeSelectioncompute='_compute_recurrence'help='Let the event automatically repeat at that interval'readonly=Falsestring='Recurrence' args: RRULE_TYPE_SELECTION -
rrule_type_uiSelectioncompute='_compute_rrule_type_ui'help='Let the event automatically repeat at that interval'readonly=Falsestring='Repeat' args: RRULE_TYPE_SELECTION_UI -
satBooleancompute='_compute_recurrence'readonly=False -
should_show_statusBooleancompute='_compute_should_show_status' -
show_asSelectiondefault='busy'help="If the time is shown as 'busy', this event will be visible to other people with either the full information or simply 'busy' written depending on its privacy. Use this option to let other people know that you are unavailable during that period of time. \n If the event is shown as 'free', other users know that you are available during that period of time."required=True args: [('free', 'Available'), ('busy', 'Busy')], 'Show as' -
startDatetimedefault=_default_starthelp='Start date of an event, without time for full days events'index=Truerequired=Truetracking=True args: 'Start' -
start_dateDatecompute='_compute_dates'inverse='_inverse_dates'store=Truetracking=True args: 'Start Date' -
stopDatetimecompute='_compute_stop'default=_default_stophelp='Stop date of an event, without time for full days events'readonly=Falserequired=Truestore=Truetracking=True args: 'Stop' -
stop_dateDatecompute='_compute_dates'inverse='_inverse_dates'store=Truetracking=True args: 'End Date' -
sunBooleancompute='_compute_recurrence'readonly=False -
tentative_countIntegercompute='_compute_attendees_count' -
thuBooleancompute='_compute_recurrence'readonly=False -
tueBooleancompute='_compute_recurrence'readonly=False -
unavailable_partner_idsMany2many → res.partnercompute='_compute_unavailable_partner_ids'string='Unavailable Attendees' args: 'res.partner' -
untilDatecompute='_compute_recurrence'readonly=False -
user_can_editBooleancompute='_compute_user_can_edit' -
user_idMany2one → res.usersdefault=<expr>index='btree_not_null' args: 'res.users', 'Organizer' -
videocall_channel_idMany2one → discuss.channelindex='btree_not_null' args: 'discuss.channel', 'Discuss Channel' -
videocall_locationCharcompute='_compute_videocall_location'copy=Truestore=True args: 'Meeting URL' -
videocall_sourceSelectioncompute='_compute_videocall_source' args: [('discuss', 'Discuss'), ('custom', 'Custom')] -
wedBooleancompute='_compute_recurrence'readonly=False -
weekdaySelectioncompute='_compute_recurrence'readonly=False args: WEEKDAY_SELECTION
-
action_confirm(self)The value of show_as for draft events is 'free' as the events are not yet confirmed and partners or resouces can still be allocated to other events. Once the draft state is removed from the events, they are shown as busy as the attendees receive a confirmation. -
action_join_meeting(self, partner_id)Method used when an existing user wants to join -
action_join_video_call(self) -
action_mass_archive(self, recurrence_update_setting)The aim of this action purpose is to be called from sync calendar module when mass deletion is not possible. -
action_mass_deletion(self, recurrence_update_setting) -
action_open_archive_or_unlink_wizard(self, requested_action, next_action=None)This method allows users to manage some actions related to the archiving or deletion from the frontend. If the event belongs to a recurrence, then it shows a form offering to select which event of this one must be archived or deleted. If needed, it displays a wizard to approve the sending of the cancellation emails to the attendees. This wizard also allows to edit the cancellation email if only one event has been selected. :param requested_action: The action requested from the interface triggering the method and can be "archive" or "unlink" :param next_action: The action to perform once the events are unlinked or archived :return: Action to archive or unlink the event(s) -
action_open_calendar_event(self) -
action_open_composer(self) -
action_sendmail(self) -
change_attendee_status(self, status, recurrence_update_setting) -
clear_videocall_location(self) -
copy(self, default=None)When an event is copied, the attendees should be recreated to avoid sharing the same attendee records between copies -
create(self, vals_list)@api.model_create_multi -
default_get(self, fields)@api.model -
find_partner_customer(self) -
get_default_duration(self)@api.model -
get_discuss_videocall_location(self)@api.model -
get_display_time_tz(self, tz=False)get the display_time of the meeting, forcing the timezone. This method is called from email template, to not use sudo(). -
get_formatted_date_and_time(self, datetime, date_format=None, time_format=None)@api.modelget the date and time converted to the environment timezone and formatted according to date_format and time_format :param datetime: the datetime to format :param str date_format: the format or the date (LDML format), if not specified the default format of the lang :param str time_format: “medium”, or “short” to use res.lang format with or without the seconds. Or a custom time pattern compatible with `babel` lib :return: a tuple with (formatted_datetime.date, formatted_datetime.time) -
get_next_alarm_date(self, events_by_alarm) -
get_state_selections(self)@api.model -
set_discuss_videocall_location(self) -
unlink(self) -
write(self, vals)
New fields (7)
-
block_mailBooleandefault=False -
calendar_event_idMany2one → calendar.eventrequired=True args: 'calendar.event', 'Calendar Event' -
recipient_idsMany2many → res.partnercompute='_compute_recipient_ids'readonly=Falsestore=Truestring='Recipients' args: 'res.partner' -
recurrence_choiceSelectiondefault='self_only'help="This field allows to perform the archiving or deletion on several events belonging to the selected event's recurrence." args: [('self_only', 'This event'), ('future_events', 'This and following events'), ('all_events', 'All the events')] -
recurrencyBooleanrelated='calendar_event_id.recurrency' args: 'Recurrent' -
requested_actionSelectiondefault='archive'required=True args: [('archive', 'archive'), ('unlink', 'delete')] -
template_idMany2onecompute='_compute_template_id'
-
action_archive(self) -
action_send_mail_and_archive(self) -
action_send_mail_and_unlink(self)Send the composed email and delete the event based on the specified deletion type. -
action_unlink(self)Delete the events specified with recurrence_choice field. :return: Client action to reload the page.
New fields (4)
-
block_mailBooleandefault=False -
calendar_event_idsMany2many → calendar.eventrequired=True args: 'calendar.event', 'calendar_event_multi_archive_or_unlink_wizard_rel' -
has_recurrent_eventsBooleancompute='_compute_has_recurrent_events' -
requested_actionSelectiondefault='archive'required=True args: [('archive', 'archive'), ('unlink', 'delete')]
-
action_archive(self) -
action_send_mails_and_archive(self) -
action_send_mails_and_unlink(self) -
action_unlink(self)
New fields (2)
-
colorIntegerdefault=_default_color args: 'Color' -
nameCharrequired=True args: 'Name'
No public methods.
New fields (3)
-
activeBooleandefault=True args: 'Active' -
partner_idMany2one → res.partnerindex=Truerequired=True args: 'res.partner', 'Employee' -
user_idMany2one → res.usersdefault=<expr>index=Trueondelete='cascade'required=True args: 'res.users', 'Me'
-
init_partner_filters(self)@api.modelDefault the partners filters on the ones listed in the context 'default_partner_ids' key if any. If there's none, reset every partner filters. -
update_partner_filters(self, partner_ids)@api.modelUpdate current user partner filters. Deactivating a partner filter by writing "active" to false instead of unlinking. This keeps things fast and safe, as the filter can be reactivated/deactivated instantly and the calendar view can reload right away (no need to debounce to prevent record not found crashes). :param partner_ids: Ids of the partners for which the filters should be activated. Not considering the current user partner as the current user events filtering is handled separatly from the partner filters.
New fields (24)
-
base_event_idMany2one → calendar.eventcopy=Falseindex='btree'ondelete='set null' args: 'calendar.event' -
bydaySelectionstring='By day' args: BYDAY_SELECTION -
calendar_event_idsOne2many → calendar.eventargs: 'calendar.event', 'recurrence_id' -
calendar_idMany2onerelated='base_event_id.calendar_id'string='Calendar' -
countIntegerdefault=1 -
dayIntegerdefault=1 -
dtstartDatetimecompute='_compute_dtstart' -
end_typeSelectiondefault='forever' args: END_TYPE_SELECTION -
event_tzSelectiondefault=<expr>string='Timezone' args: _tz_get -
friBoolean -
intervalIntegerdefault=1 -
monBoolean -
month_bySelectiondefault='date' args: MONTH_BY_SELECTION -
nameCharcompute='_compute_name'store=True -
rruleCharcompute='_compute_rrule'inverse='_inverse_rrule'store=True -
rrule_typeSelectiondefault='weekly' args: RRULE_TYPE_SELECTION -
satBoolean -
sunBoolean -
thuBoolean -
trigger_idMany2one → ir.cron.triggerargs: 'ir.cron.trigger' -
tueBoolean -
untilDateargs: 'Repeat Until' -
wedBoolean -
weekdaySelectionstring='Weekday' args: WEEKDAY_SELECTION
-
get_recurrence_name(self)
New fields (10)
-
access_roleSelectionreadonly=Truerequired=True args: [('owner', 'Owner'), ('writer', 'Writer')] -
calendar_idMany2one → calendar.calendarindex='btree'ondelete='cascade'readonly=Truerequired=Truestring='Calendar' args: 'calendar.calendar' -
calendar_owner_idMany2onerelated='calendar_id.owner_id' -
calendar_share_user_idsMany2manyreadonly=Truerelated='calendar_id.share_user_ids' -
filter_colorIntegerdefault=_get_default_colorstring='Color' -
is_filter_activeBooleandefault=True args: 'Shown in Filters List' -
is_filter_checkedBooleandefault=True args: 'Filter Enabled' -
is_primaryBooleanreadonly=True args: 'Primary' -
nameCharargs: 'Label' -
user_idMany2one → res.usersreadonly=Truerequired=Truestring='User' args: 'res.users'
-
unlink(self) -
write(self, vals)
New fields (1)
-
calendar_event_idsOne2many → calendar.eventargs: 'calendar.event', 'videocall_channel_id'
No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (1)
-
calendar_event_idMany2one → calendar.eventindex='btree_not_null'ondelete='cascade'string='Calendar Meeting' args: 'calendar.event'
-
action_create_calendar_event(self) -
unlink_w_meeting(self) -
write(self, vals)
New fields (1)
-
activity_calendar_event_idMany2one → calendar.eventcompute='_compute_activity_calendar_event_id'groups='base.group_user'string='Next Activity Calendar Event' args: 'calendar.event'
No public methods.
New fields (0)
No new fields.
Public methods (1)-
action_create_calendar_event(self)
New fields (1)
-
categorySelectionselection_add=[('meeting', 'Meeting')]
No public methods.
New fields (5)
-
calendar_last_notif_ackDatetimedefault=fields.Datetime.now args: 'Last notification marked as read from base Calendar' -
meeting_countIntegercompute='_compute_meeting_count' args: '# Meetings' -
meeting_display_labelCharcompute='_compute_meeting_display' -
meeting_idsMany2many → calendar.eventcopy=Falsestring='Meetings' args: 'calendar.event', 'calendar_event_res_partner_rel', 'res_partner_id', 'calendar_event_id' -
meeting_next_dateDatecompute='_compute_meeting_display'string='Next Meeting'
-
action_schedule_meeting(self) -
get_attendee_detail(self, meeting_ids)Return a list of dict of the given meetings with the attendees details Used by: - many2many_attendee.js: Many2ManyAttendee - calendar_model.js (calendar.CalendarModel)
New fields (5)
-
calendar_idsOne2many → calendar.calendarcompute='_compute_calendar_ids'readonly=Falseuser_writeable=True args: 'calendar.calendar' -
calendar_user_idsOne2many → calendar.userargs: 'calendar.user', 'user_id' -
owned_calendar_idsOne2many → calendar.calendarcompute='_compute_calendar_ids' args: 'calendar.calendar' -
primary_calendar_idMany2one → calendar.calendarcompute='_compute_primary_calendar'store=True args: 'calendar.calendar' -
writable_calendar_idsOne2many → calendar.calendarcompute='_compute_calendar_ids' args: 'calendar.calendar'
-
check_calendar_credentials(self)@api.model -
check_synchronization_status(self) -
create(self, vals_list)@api.model_create_multi -
get_calendar_model_data(self)@api.model -
get_calendar_sync_email(self)@api.modelMeant to be overridden by a specific calendar provider -
get_selected_calendars_partner_ids(self, include_user=True)Retrieves the partner IDs of the attendees selected in the calendar view. :param bool include_user: Determines whether to include the current user's partner ID in the results. :return: A list of integer IDs representing the partners selected in the calendar view. If 'include_user' is True, the list will also include the current user's partner ID. :rtype: list -
unlink(self)
New fields (1)
-
calendar_show_activitiesBooleandefault=Truestring='Show Activities in Calendar'
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…