| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
achievement_card |
Achivement Card | ir.ui.view | qweb | New |
course_card |
Course Card | ir.ui.view | qweb | New |
course_card_information |
Course Information | ir.ui.view | qweb | New |
course_card_information_badge |
New Content Badge | ir.ui.view | qweb | Inherits website_slides.course_card_information |
course_join |
course_join | ir.ui.view | qweb | New |
course_main |
Course Main | ir.ui.view | qweb | New |
course_nav |
Course Navigation Header | ir.ui.view | qweb | New |
course_promoted_slide |
Documentation Course content: promoted slide | ir.ui.view | qweb | New |
course_sidebar |
Course Sidebar (infos, CTA) | ir.ui.view | qweb | New |
course_slides_cards |
Documentation Course content: cards / categories | ir.ui.view | qweb | New |
course_slides_list |
Training Course content: list | ir.ui.view | qweb | New |
course_slides_list_placeholder |
Course Placeholder Content | ir.ui.view | qweb | New |
course_slides_list_sample |
Course Sample Content | ir.ui.view | qweb | New |
course_slides_list_slide |
Slide template for a training channel | ir.ui.view | qweb | New |
courses_footer |
courses_footer | ir.ui.view | qweb | New |
courses_home |
Odoo Courses Homepage | ir.ui.view | qweb | New |
courses_home_side_bar |
courses_home_side_bar | ir.ui.view | qweb | New |
courses_my |
courses_my | ir.ui.view | qweb | New |
courses_search_bar |
courses_search_bar | ir.ui.view | qweb | New |
courses_search_results |
courses_search_results | ir.ui.view | qweb | New |
courses_search_tags |
courses_search_tags | ir.ui.view | qweb | New |
display_course |
display_course | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
gamification_karma_tracking_view_search |
gamification.karma.tracking.view.search.inherit.website.slides | gamification.karma.tracking | xpath | Inherits gamification.gamification_karma_tracking_view_search |
join_course_link |
Join Course Link | ir.ui.view | qweb | New |
lesson_card |
Lesson Card | ir.ui.view | qweb | New |
lesson_content_quiz |
Lesson: Quiz specific content | ir.ui.view | qweb | New |
lesson_content_quiz_add_buttons |
Lesson: Quiz Add Buttons template | ir.ui.view | qweb | New |
lesson_content_quiz_question |
Lesson: Quiz question template | ir.ui.view | qweb | New |
mail_activity_view_form |
mail.activity.view.form.inherit.slides | mail.activity | field | Inherits mail.mail_activity_view_form |
mail_notification_channel_invite |
mail_notification_channel_invite | ir.ui.view | qweb | New |
profile_access_denied |
profile_access_denied | ir.ui.view | qweb | Inherits website_profile.profile_access_denied |
rating_rating_view_form_slides |
rating.rating.view.form.slides | rating.rating | form | New |
rating_rating_view_graph_slide_channel |
rating.rating.view.graph.slides | rating.rating | graph | New |
rating_rating_view_pivot_slide_channel |
rating.rating.view.pivot.slides | rating.rating | pivot | New |
rating_rating_view_search_slide_channel |
rating.rating.view.search.slides | rating.rating | xpath | Inherits rating.rating_rating_view_search |
rating_rating_view_tree_slide_channel |
rating.rating.view.list.slides | rating.rating | list | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.website.slides | res.config.settings | xpath | Inherits website.res_config_settings_view_form |
res_partner_view_form |
res.partner.view.form.inherit.slides | res.partner | xpath | Inherits base.view_partner_form |
slide_aside_card |
Related Slide | ir.ui.view | qweb | New |
slide_aside_documentation |
Slide: Sidebar in Documentation | ir.ui.view | qweb | New |
slide_aside_training |
Slide: Sidebar in Training | ir.ui.view | qweb | New |
slide_aside_training_category |
Category item for the slide detailed view list | ir.ui.view | qweb | New |
slide_channel_invite_view_form |
slide.channel.invite.view.form | slide.channel.invite | form | New |
slide_channel_pages_kanban_view |
Course Pages Kanban | slide.channel | xpath | Inherits slide_channel_view_kanban |
slide_channel_pages_tree_view |
Course Pages List | slide.channel | xpath | Inherits slide_channel_view_tree |
slide_channel_partner_view_graph |
slide.channel.partner.view.graph | slide.channel.partner | graph | New |
slide_channel_partner_view_kanban |
slide.channel.partner.view.kanban | slide.channel.partner | kanban | New |
slide_channel_partner_view_pivot |
slide.channel.partner.view.pivot | slide.channel.partner | pivot | New |
slide_channel_partner_view_search |
slide.channel.partner.search | slide.channel.partner | search | New |
slide_channel_partner_view_tree |
slide.channel.partner.list | slide.channel.partner | list | New |
slide_channel_tag_group_view_form |
slide.channel.tag.group.view.form | slide.channel.tag.group | form | New |
slide_channel_tag_group_view_search |
slide.channel.tag.group.view.search | slide.channel.tag.group | search | New |
slide_channel_tag_group_view_tree |
slide.channel.tag.group.view.list | slide.channel.tag.group | list | New |
slide_channel_tag_view_form |
slide.channel.tag.view.form | slide.channel.tag | form | New |
slide_channel_tag_view_search |
slide.channel.tag.view.search | slide.channel.tag | search | New |
slide_channel_tag_view_tree |
slide.channel.tag.view.list | slide.channel.tag | list | New |
slide_channel_view_form_add |
slide.channel.view.form.add | slide.channel | form | New |
slide_channel_view_graph |
slide.channel.view.graph | slide.channel | graph | New |
slide_channel_view_kanban |
slide.channel.view.kanban | slide.channel | kanban | New |
slide_channel_view_pivot |
slide.channel.view.pivot | slide.channel | pivot | New |
slide_channel_view_search |
slide.channel.view.search | slide.channel | search | New |
slide_channel_view_tree |
slide.channel.view.list | slide.channel | list | New |
slide_channel_view_tree_report |
slide.channel.view.list.report | slide.channel | list | New |
slide_content_detailed |
Slide: Detailed Content | ir.ui.view | qweb | New |
slide_embed_view_search |
slide.embed.view.search | slide.embed | search | New |
slide_embed_view_tree |
slide.embed.view.list | slide.embed | list | New |
slide_fullscreen |
Fullscreen | ir.ui.view | qweb | New |
slide_fullscreen_sidebar_category |
Slides category template for fullscreen view side bar | ir.ui.view | qweb | New |
slide_main |
Slide Detailed View | ir.ui.view | qweb | New |
slide_question_view_form |
slide.question.view.form | slide.question | form | New |
slide_question_view_search |
slide.question.view.search | slide.question | search | New |
slide_question_view_tree |
slide.question.view.list | slide.question | list | New |
slide_question_view_tree_report |
slide.question.view.list.report | slide.question | list | New |
slide_share_link |
slide_share_link | ir.ui.view | qweb | New |
slide_share_modal |
slide_share_modal | ir.ui.view | qweb | New |
slide_share_modal_body |
slide_share_modal_body | ir.ui.view | qweb | New |
slide_share_modal_header |
slide_share_modal_header | ir.ui.view | qweb | New |
slide_share_social |
Slides Media Share | ir.ui.view | qweb | New |
slide_sidebar_done_button |
Sidebar Done Button | ir.ui.view | qweb | New |
slide_slide_partner_view_form |
slide.slide.partner.view.form | slide.slide.partner | form | New |
slide_slide_partner_view_search |
slide.slide.partner.view.search | slide.slide.partner | search | New |
slide_slide_partner_view_tree |
slide.slide.partner.view.list | slide.slide.partner | list | New |
slide_slide_view_graph |
slide.slide.view.graph | slide.slide | graph | New |
slide_slide_view_kanban |
slide.slide.view.kanban | slide.slide | kanban | New |
slide_slide_view_pivot |
slide.slide.view.pivot | slide.slide | pivot | New |
slide_slide_view_tree_report |
slide.slide.view.list.report | slide.slide | list | New |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slides_home_achievements_small |
Users | ir.ui.view | qweb | New |
slides_home_user_achievements_small |
User Achievements | ir.ui.view | qweb | New |
slides_home_user_profile_small |
User Profile | ir.ui.view | qweb | New |
slides_home_users_small |
Users | ir.ui.view | qweb | New |
slides_misc_user_image |
User Avatar | ir.ui.view | qweb | New |
toggle_latest_achievements |
Display Achievements | ir.ui.view | qweb | Inherits website_slides.slides_home_achievements_small |
toggle_leaderboard |
Display Leaderboard | ir.ui.view | qweb | Inherits website_slides.slides_home_users_small |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_quickkarma_card |
User QuickKarma Card | ir.ui.view | qweb | New |
view_slide_channel_form |
slide.channel.view.form | slide.channel | form | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_form_wo_channel_id |
slide.slide.form.wo.channel_id | slide.slide | field | Inherits view_slide_slide_form |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.list | slide.slide | list | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.list | slide.tag | list | New |
No new fields.
Public methods (0)No public methods.
challenge_category
Selection
ondelete={'slides': 'set default'}
selection_add=[('slides', 'Website / Slides')]
No public methods.
No new fields.
Public methods (0)No public methods.
request_partner_id
Many2one → res.partner
ondelete='cascade'
string='Requesting Partner'
args: 'res.partner'
No public methods.
No new fields.
Public methods (0)No public methods.
module_mass_mailing_slides
Boolean
string='Mailing'
module_website_sale_slides
Boolean
string='Sell on eCommerce'
module_website_slides_forum
Boolean
string='Forum'
module_website_slides_survey
Boolean
string='Certifications'
website_slide_google_app_key
Char
readonly=False
related='website_id.website_slide_google_app_key'
No public methods.
No new fields.
Public methods (1)write(self, vals)
slide_channel_company_count
Integer
compute='_compute_slide_channel_company_count'
groups='website_slides.group_website_slides_officer'
args: 'Company Course Count'
slide_channel_completed_ids
One2many → slide.channel
compute='_compute_slide_channel_values'
groups='website_slides.group_website_slides_officer'
search='_search_slide_channel_completed_ids'
string='Completed Courses'
args: 'slide.channel'
slide_channel_count
Integer
compute='_compute_slide_channel_values'
groups='website_slides.group_website_slides_officer'
args: 'Course Count'
slide_channel_ids
Many2many → slide.channel
compute='_compute_slide_channel_values'
groups='website_slides.group_website_slides_officer'
search='_search_slide_channel_ids'
string='eLearning Courses'
args: 'slide.channel'
action_view_courses(self)
No new fields.
Public methods (3)create(self, vals_list)
get_gamification_redirection_data(self)
write(self, vals)
comment
Text
help='This comment will be displayed to the user if they select this answer'
translate=True
args: 'Comment'
is_correct
Boolean
question_id
Many2one → slide.question
index=True
ondelete='cascade'
required=True
string='Question'
args: 'slide.question'
sequence
Integer
text_value
Char
required=True
translate=True
args: 'Answer'
No public methods.
access_token
Char
copy=False
default=_default_access_token
args: 'Security Token'
active
Boolean
default=True
tracking=100
allow_comment
Boolean
compute='_compute_allow_comment'
help='Allow Attendees to like and comment your content and to submit reviews on your course.'
precompute=True
readonly=False
store=True
args: 'Allow rating on Course'
can_comment
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Comment'
can_review
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Review'
can_upload
Boolean
compute='_compute_can_upload'
compute_sudo=False
args: 'Can Upload'
can_vote
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Vote'
channel_partner_all_ids
One2many → slide.channel.partner
groups='website_slides.group_website_slides_officer'
string='All Attendees Information'
args: 'slide.channel.partner', 'channel_id'
channel_partner_ids
One2many → slide.channel.partner
domain=[('member_status', '!=', 'invited')]
groups='website_slides.group_website_slides_officer'
string='Enrolled Attendees Information'
args: 'slide.channel.partner', 'channel_id'
channel_type
Selection
default='training'
help='Defines the course type (e.g., "Training" for interactive learning, or "Documentation" for resources and guides).'
required=True
string='Course type'
args: [('training', 'Training'), ('documentation', 'Documentation')]
color
Integer
default=0
help='Used to decorate kanban view'
args: 'Color Index'
completed
Boolean
compute='_compute_user_statistics'
compute_sudo=False
args: 'Done'
completed_template_id
Many2one → mail.template
default=<expr>
domain=[('model', '=', 'slide.channel.partner')]
help='Defines the email your Attendees will receive once they reach the end of your course.'
string='Completion Notification'
args: 'mail.template'
completion
Integer
compute='_compute_user_statistics'
compute_sudo=False
args: 'Completion'
description
Html
help='The description that is displayed on top of the course page, just below the title'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Description'
description_html
Html
sanitize_attributes=False
sanitize_form=False
translate=tools.html_translate
args: 'Detailed Description'
description_short
Html
help='The description that is displayed on the course card'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Short Description'
enroll
Selection
compute='_compute_enroll'
copy=False
default='public'
help='Defines how people can enroll to your Course.'
readonly=False
required=True
store=True
string='Enroll Policy'
args: [('public', 'Open'), ('invite', 'On Invitation')]
enroll_group_ids
Many2many → res.groups
help='Members of those groups are automatically added as members of the channel.'
string='Auto Enroll Groups'
args: 'res.groups'
enroll_msg
Html
default=_get_default_enroll_msg
help='Message explaining the enroll process'
sanitize_attributes=False
translate=tools.html_translate
args: 'Enroll Message'
has_requested_access
Boolean
compute='_compute_has_requested_access'
compute_sudo=False
string='Access Requested'
is_member
Boolean
compute='_compute_membership_values'
help='Is the attendee actively enrolled.'
search='_search_is_member'
string='Is Enrolled Attendee'
is_member_invited
Boolean
compute='_compute_membership_values'
help='Is the invitation for this attendee pending.'
search='_search_is_member_invited'
string='Is Invited Attendee'
is_visible
Boolean
compute='_compute_is_visible'
search='_search_is_visible'
string='Is Visible On Website'
karma_gen_channel_finish
Integer
default=10
string='Course finished'
karma_gen_channel_rank
Integer
default=5
string='Course ranked'
karma_review
Integer
default=10
help='Karma needed to add a review on the course'
args: 'Add Review'
karma_slide_comment
Integer
default=3
help='Karma needed to add a comment on a slide of this course'
args: 'Add Comment'
karma_slide_vote
Integer
default=3
help='Karma needed to like/dislike a slide of this course.'
args: 'Vote'
members_all_count
Integer
compute='_compute_members_counts'
args: '# Enrolled or Invited Attendees'
members_completed_count
Integer
compute='_compute_members_counts'
args: '# Completed Attendees'
members_count
Integer
compute='_compute_members_counts'
args: '# Enrolled Attendees'
members_engaged_count
Integer
compute='_compute_members_counts'
help="Active attendees include both 'joined' and 'ongoing' attendees."
args: '# Active Attendees'
members_invited_count
Integer
compute='_compute_members_counts'
args: '# Invited Attendees'
name
Char
required=True
translate=True
args: 'Name'
nbr_article
Integer
compute='_compute_slides_statistics'
store=True
args: 'Articles'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Infographics'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Videos'
partner_has_new_content
Boolean
compute='_compute_partner_has_new_content'
compute_sudo=False
partner_ids
Many2many → res.partner
compute='_compute_partners'
help='Enrolled partners in the course'
search='_search_partner_ids'
string='Attendees'
args: 'res.partner'
prerequisite_channel_ids
Many2many → slide.channel
domain="[('id', '!=', id), ('visibility', '=', visibility), ('website_published', '=', website_published)]"
help='Prerequisite courses to complete before accessing this one.'
string='Prerequisites'
args: 'slide.channel', 'slide_channel_prerequisite_slide_channel_rel', 'channel_id', 'prerequisite_channel_id'
prerequisite_of_channel_ids
Many2many → slide.channel
help='Courses that have this course as prerequisite.'
string='Prerequisite Of'
args: 'slide.channel', 'slide_channel_prerequisite_slide_channel_rel', 'prerequisite_channel_id', 'channel_id'
prerequisite_user_has_completed
Boolean
compute='_compute_prerequisite_user_has_completed'
args: 'Has Completed Prerequisite'
promote_strategy
Selection
copy=False
default='latest'
help='Defines the content that will be promoted on the course home page'
required=False
string='Featured Content'
args: [('latest', 'Latest Created'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed'), ('specific', 'Select Manually'), ('none', 'None')]
promoted_slide_id
Many2one → slide.slide
copy=False
string='Promoted Slide'
args: 'slide.slide'
publish_template_id
Many2one → mail.template
default=<expr>
domain=[('model', '=', 'slide.slide')]
help='Defines the email your Attendees will receive each time you upload new content.'
string='New Content Notification'
args: 'mail.template'
rating_avg_stars
Float
compute='_compute_rating_stats'
compute_sudo=True
digits=(16, 1)
args: 'Rating Average (Stars)'
sequence
Integer
default=10
share_channel_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a channel'
string='Channel Share Template'
args: 'mail.template'
share_slide_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Share Template'
args: 'mail.template'
slide_category_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Categories'
args: 'slide.slide'
slide_content_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Content'
args: 'slide.slide'
slide_ids
One2many → slide.slide
copy=True
string='Slides and categories'
args: 'slide.slide', 'channel_id'
slide_last_update
Date
compute='_compute_slide_last_update'
store=True
args: 'Last Update'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Slide User Data'
args: 'slide.slide.partner', 'channel_id'
tag_ids
Many2many → slide.channel.tag
help='Used to categorize and filter displayed channels/courses'
string='Tags'
args: 'slide.channel.tag', 'slide_channel_tag_rel', 'channel_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Contents'
total_time
Float
compute='_compute_slides_statistics'
digits=(10, 2)
store=True
args: 'Duration'
total_views
Integer
compute='_compute_slides_statistics'
store=True
args: 'Visits'
total_votes
Integer
compute='_compute_slides_statistics'
store=True
args: 'Votes'
upload_group_ids
Many2many → res.groups
groups='base.group_user'
help='Group of users allowed to publish contents on a documentation course.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
user_id
Many2one → res.users
default=<expr>
string='Responsible'
args: 'res.users'
visibility
Selection
default='public'
help='Defines who can access your courses and their content.'
required=True
string='Show Course To'
args: [('public', 'Everyone'), ('connected', 'Signed In'), ('members', 'Course Attendees'), ('link', 'Anyone with the link')]
website_default_background_image_url
Char
compute='_compute_website_default_background_image_url'
args: 'Background image URL'
action_archive(self)
action_channel_enroll(self)
action_channel_invite(self)
action_grant_access(self, partner_id)
action_redirect_to_completed_members(self)
action_redirect_to_engaged_members(self)
action_redirect_to_invited_members(self)
action_redirect_to_members(self, status_filter='')
action_refuse_access(self, partner_id)
action_request_access(self)
action_unarchive(self)
action_view_ratings(self)
action_view_slides(self)
copy_data(self, default=None)
create(self, vals_list)
get_backend_menu_id(self)
message_post(self, *, parent_id=False, subtype_id=False, **kwargs)
unlink(self)
write(self, vals)
attachment_ids
Many2many → ir.attachment
bypass_search_access=True
string='Attachments'
args: 'ir.attachment'
channel_id
Many2one → slide.channel
required=True
string='Course'
args: 'slide.channel'
channel_invite_url
Char
compute='_compute_channel_invite_url'
args: 'Course Link'
channel_published
Boolean
related='channel_id.is_published'
channel_visibility
Selection
related='channel_id.visibility'
enroll_mode
Boolean
help='Whether invited partners will be added as enrolled. Otherwise, they will be added as invited.'
readonly=True
args: 'Enroll partners'
partner_ids
Many2many → res.partner
string='Recipients'
args: 'res.partner'
send_email
Boolean
compute='_compute_send_email'
readonly=False
store=True
args: 'Send Email'
action_invite(self)
active
Boolean
default=True
string='Active'
channel_enroll
Selection
related='channel_id.enroll'
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
required=True
string='Course'
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
channel_user_id
Many2one → res.users
related='channel_id.user_id'
string='Responsible'
args: 'res.users'
channel_visibility
Selection
related='channel_id.visibility'
channel_website_id
Many2one → website
related='channel_id.website_id'
string='Website'
args: 'website'
completed_slides_count
Integer
default=0
args: '# Completed Contents'
completion
Integer
aggregator='avg'
default=0
args: '% Completed Contents'
invitation_link
Char
compute='_compute_invitation_link'
args: 'Invitation Link'
last_invitation_date
Datetime
member_status
Selection
default='joined'
readonly=True
required=True
string='Attendee Status'
args: [('invited', 'Invite Sent'), ('joined', 'Joined'), ('ongoing', 'Ongoing'), ('completed', 'Finished')]
next_slide_id
Many2one → slide.slide
compute='_compute_next_slide_id'
string='Next Lesson'
args: 'slide.slide'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
unlink(self)
channel_ids
Many2many → slide.channel
string='Channels'
args: 'slide.channel', 'slide_channel_tag_rel', 'tag_id', 'channel_id'
color
Integer
default=<expr>
help='Tag color used in both backend and website. No color means no display in kanban or front-end, to distinguish internal tags from public categorization tags'
string='Color Index'
group_id
Many2one → slide.channel.tag.group
index=True
ondelete='cascade'
required=True
string='Group'
args: 'slide.channel.tag.group'
group_sequence
Integer
index=True
readonly=True
related='group_id.sequence'
store=True
args: 'Group sequence'
name
Char
required=True
translate=True
args: 'Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
No public methods.
name
Char
required=True
translate=True
args: 'Group Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
tag_ids
One2many → slide.channel.tag
string='Tags'
args: 'slide.channel.tag', 'group_id'
No public methods.
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
string='Presentation'
args: 'slide.slide'
url
Char
website_name
Char
compute='_compute_website_name'
args: 'Website'
No public methods.
answer_ids
One2many → slide.answer
copy=True
string='Answer'
args: 'slide.answer', 'question_id'
answers_validation_error
Char
compute='_compute_answers_validation_error'
args: 'Error on Answers'
attempts_avg
Float
compute='_compute_statistics'
digits=(6, 2)
groups='website_slides.group_website_slides_officer'
attempts_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
done_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
question
Char
required=True
translate=True
args: 'Question Name'
sequence
Integer
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
string='Content'
args: 'slide.slide'
No public methods.
active
Boolean
default=True
tracking=100
binary_content
Binary
attachment=True
args: 'File'
can_self_mark_completed
Boolean
compute='_compute_mark_complete_actions'
help='The slide can be marked as completed even without opening it'
args: 'Can Mark Completed'
can_self_mark_uncompleted
Boolean
compute='_compute_mark_complete_actions'
help='The slide can be marked as not completed and the progression'
args: 'Can Mark Uncompleted'
category_id
Many2one → slide.slide
compute='_compute_category_id'
index='btree_not_null'
store=True
string='Section'
args: 'slide.slide'
channel_allow_comment
Boolean
related='channel_id.allow_comment'
string='Allows comment'
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
required=True
string='Course'
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
string='Channel type'
comments_count
Integer
compute='_compute_comments_count'
args: 'Number of comments'
completion_time
Float
compute='_compute_category_completion_time'
digits=(10, 4)
readonly=False
recursive=True
store=True
args: 'Duration'
date_published
Datetime
copy=False
readonly=True
tracking=False
args: 'Publish Date'
description
Html
sanitize_attributes=False
sanitize_overridable=True
translate=True
args: 'Description'
dislikes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Dislikes'
document_binary_content
Binary
readonly=False
related='binary_content'
args: 'PDF Content'
document_google_url
Char
help='Link of the document (we currently only support Google Drive as source)'
readonly=False
related='url'
args: 'Document Link'
embed_code
Html
compute='_compute_embed_code'
readonly=True
sanitize=False
args: 'Embed Code'
embed_code_external
Html
compute='_compute_embed_code'
help="Same as 'Embed Code' but used to embed the content on an external website."
readonly=True
sanitize=False
args: 'External Embed Code'
embed_count
Integer
compute='_compute_embed_counts'
args: '# of Embeds'
embed_ids
One2many → slide.embed
string='External Slide Embeds'
args: 'slide.embed', 'slide_id'
google_drive_id
Char
compute='_compute_google_drive_id'
args: 'Google Drive ID of the external URL'
html_content
Html
help="Custom HTML content for slides of category 'Article'."
sanitize_attributes=False
sanitize_form=False
sanitize_overridable=True
translate=True
args: 'HTML Content'
image_1920
Image
compute='_compute_image_1920'
readonly=False
store=True
image_binary_content
Binary
readonly=False
related='binary_content'
args: 'Image Content'
image_google_url
Char
help='Link of the image (we currently only support Google Drive as source)'
readonly=False
related='url'
args: 'Image Link'
is_category
Boolean
default=False
args: 'Is a category'
is_new_slide
Boolean
compute='_compute_is_new_slide'
args: 'Is New Slide'
is_preview
Boolean
default=False
help="The course is accessible by anyone : the users don't need to join the channel to access the content of the course."
args: 'Allow Preview'
is_published
Boolean
tracking=1
likes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Likes'
name
Char
required=True
translate=True
args: 'Title'
nbr_article
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Articles'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Images'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Videos'
partner_ids
Many2many → res.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers'
args: 'res.partner', 'slide_slide_partner', 'slide_id', 'partner_id'
public_views
Integer
copy=False
default=0
readonly=True
args: '# of Public Views'
question_ids
One2many → slide.question
copy=True
string='Questions'
args: 'slide.question', 'slide_id'
questions_count
Integer
compute='_compute_questions_count'
string='Numbers of Questions'
quiz_first_attempt_reward
Integer
default=10
args: 'Reward: first attempt'
quiz_fourth_attempt_reward
Integer
default=2
args: 'Reward: every attempt after the third try'
quiz_second_attempt_reward
Integer
default=7
args: 'Reward: second attempt'
quiz_third_attempt_reward
Integer
default=5
args: 'Reward: third attempt'
sequence
Integer
default=0
args: 'Sequence'
slide_category
Selection
default='document'
required=True
string='Category'
args: [('infographic', 'Image'), ('article', 'Article'), ('document', 'Document'), ('video', 'Video'), ('quiz', 'Quiz')]
slide_icon_class
Char
compute='_compute_slide_icon_class'
args: 'Slide Icon fa-class'
slide_ids
One2many → slide.slide
string='Content'
args: 'slide.slide', 'category_id'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers information'
args: 'slide.slide.partner', 'slide_id'
slide_resource_downloadable
Boolean
default=False
help='Allow the user to download the content of the slide.'
args: 'Allow Download'
slide_resource_ids
One2many → slide.slide.resource
copy=True
string='Additional Resource for this slide'
args: 'slide.slide.resource', 'slide_id'
slide_type
Selection
compute='_compute_slide_type'
help='Subtype of the slide category, allows more precision on the actual file type / source type.'
readonly=False
store=True
string='Slide Type'
args: [('image', 'Image'), ('article', 'Article'), ('quiz', 'Quiz'), ('pdf', 'PDF'), ('sheet', 'Sheet (Excel, Google Sheet, ...)'), ('doc', 'Document (Word, Google Doc, ...)'), ('slides', 'Slides (PowerPoint, Google Slides, ...)'), ('youtube_video', 'YouTube Video'), ('google_drive_video', 'Google Drive Video'), ('vimeo_video', 'Vimeo Video')]
slide_views
Integer
compute='_compute_slide_views'
store=True
args: '# of Website Views'
source_type
Selection
default='local_file'
required=True
args: [('local_file', 'Upload from Device'), ('external', 'Retrieve from Google Drive')]
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: '# Total Views'
url
Char
help='URL of the Google Drive file or URL of the YouTube video'
args: 'External URL'
user_has_completed
Boolean
compute='_compute_user_membership_id'
compute_sudo=False
args: 'Is Member'
user_has_completed_category
Boolean
compute='_compute_category_completed'
args: 'Is Category Completed'
user_id
Many2one → res.users
default=<expr>
string='Uploaded by'
args: 'res.users'
user_membership_id
Many2one → slide.slide.partner
compute='_compute_user_membership_id'
compute_sudo=False
help='Subscriber information for the current logged in user'
string='Subscriber information'
args: 'slide.slide.partner'
user_vote
Integer
compute='_compute_user_membership_id'
compute_sudo=False
args: 'User vote'
video_source_type
Selection
compute='_compute_video_source_type'
string='Video Source'
args: [('youtube', 'YouTube'), ('google_drive', 'Google Drive'), ('vimeo', 'Vimeo')]
video_url
Char
help='Link of the video (we support YouTube, Google Drive and Vimeo as sources)'
readonly=False
related='url'
args: 'Video Link'
vimeo_id
Char
compute='_compute_vimeo_id'
args: 'Video Vimeo ID'
website_id
Many2one
readonly=True
related='channel_id.website_id'
website_published
Boolean
tracking=False
website_share_url
Char
compute='_compute_website_share_url'
args: 'Share URL'
youtube_id
Char
compute='_compute_youtube_id'
args: 'Video YouTube ID'
action_dislike(self)
action_like(self)
action_mark_completed(self)
action_mark_uncompleted(self)
action_set_viewed(self, quiz_attempts_inc=False)
action_view_embeds(self)
copy_data(self, default=None)
create(self, vals_list)
get_backend_menu_id(self)
get_base_url(self)
message_post(self, *, message_type='notification', **kwargs)
unlink(self)
write(self, vals)
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
related='slide_id.channel_id'
store=True
string='Channel'
args: 'slide.channel'
completed
Boolean
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
quiz_attempts_count
Integer
default=0
args: 'Quiz attempts count'
slide_category
Selection
related='slide_id.slide_category'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
string='Content'
args: 'slide.slide'
vote
Integer
default=0
args: 'Vote'
create(self, vals_list)
write(self, vals)
data
Binary
compute='_compute_reset_resources'
readonly=False
store=True
args: 'Resource'
download_url
Char
compute='_compute_download_url'
args: 'Download URL'
file_name
Char
store=True
link
Char
compute='_compute_reset_resources'
readonly=False
store=True
args: 'Link'
name
Char
compute='_compute_name'
readonly=False
store=True
args: 'Name'
resource_type
Selection
required=True
args: [('file', 'File'), ('url', 'Link')]
sequence
Integer
string='Sequence'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
args: 'slide.slide'
No public methods.
name
Char
required=True
translate=True
args: 'Name'
No public methods.
website_slide_google_app_key
Char
groups='base.group_system'
args: 'Google Doc Key'
get_suggested_controllers(self)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
achievement_card |
Achivement Card | ir.ui.view | qweb | New |
course_card |
Course Card | ir.ui.view | qweb | New |
course_card_information |
Course Information | ir.ui.view | qweb | New |
course_card_information_arrow |
New Content Ribbon | ir.ui.view | qweb | Inherits website_slides.course_card_information |
course_join |
course_join | ir.ui.view | qweb | New |
course_main |
Course Main | ir.ui.view | qweb | New |
course_nav |
Course Navigation Header | ir.ui.view | qweb | New |
course_promoted_slide |
Documentation Course content: promoted slide | ir.ui.view | qweb | New |
course_sidebar |
Course Sidebar (infos, CTA) | ir.ui.view | qweb | New |
course_slides_cards |
Documentation Course content: cards / categories | ir.ui.view | qweb | New |
course_slides_list |
Training Course content: list | ir.ui.view | qweb | New |
course_slides_list_placeholder |
Course Placeholder Content | ir.ui.view | qweb | New |
course_slides_list_sample |
Course Sample Content | ir.ui.view | qweb | New |
course_slides_list_slide |
Slide template for a training channel | ir.ui.view | qweb | New |
courses_all |
Odoo All Courses | ir.ui.view | qweb | New |
courses_footer |
courses_footer | ir.ui.view | qweb | New |
courses_home |
Odoo Courses Homepage | ir.ui.view | qweb | New |
display_course |
display_course | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
gamification_karma_tracking_view_search |
gamification.karma.tracking.view.search.inherit.website.slides | gamification.karma.tracking | xpath | Inherits gamification.gamification_karma_tracking_view_search |
join_course_link |
Join Course Link | ir.ui.view | qweb | New |
lesson_card |
Lesson Card | ir.ui.view | qweb | New |
lesson_content_quiz |
Lesson: Quiz specific content | ir.ui.view | qweb | New |
lesson_content_quiz_add_buttons |
Lesson: Quiz Add Buttons template | ir.ui.view | qweb | New |
lesson_content_quiz_question |
Lesson: Quiz question template | ir.ui.view | qweb | New |
mail_notification_channel_invite |
mail_notification_channel_invite | ir.ui.view | qweb | New |
profile_access_denied |
profile_access_denied | ir.ui.view | qweb | Inherits website_profile.profile_access_denied |
rating_rating_view_form_slides |
rating.rating.view.form.slides | rating.rating | form | New |
rating_rating_view_graph_slide_channel |
rating.rating.view.graph.slides | rating.rating | graph | New |
rating_rating_view_pivot_slide_channel |
rating.rating.view.pivot.slides | rating.rating | pivot | New |
rating_rating_view_search_slide_channel |
rating.rating.view.search.slides | rating.rating | xpath | Inherits rating.rating_rating_view_search |
rating_rating_view_tree_slide_channel |
rating.rating.view.list.slides | rating.rating | list | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.website.slides | res.config.settings | xpath | Inherits website.res_config_settings_view_form |
res_partner_view_form |
res.partner.view.form.inherit.slides | res.partner | xpath | Inherits base.view_partner_form |
slide_aside_card |
Related Slide | ir.ui.view | qweb | New |
slide_aside_documentation |
Slide: Sidebar in Documentation | ir.ui.view | qweb | New |
slide_aside_training |
Slide: Sidebar in Training | ir.ui.view | qweb | New |
slide_aside_training_category |
Category item for the slide detailed view list | ir.ui.view | qweb | New |
slide_channel_invite_view_form |
slide.channel.invite.view.form | slide.channel.invite | form | New |
slide_channel_pages_kanban_view |
Course Pages Kanban | slide.channel | xpath | Inherits slide_channel_view_kanban |
slide_channel_pages_tree_view |
Course Pages List | slide.channel | xpath | Inherits slide_channel_view_tree |
slide_channel_partner_view_graph |
slide.channel.partner.view.graph | slide.channel.partner | graph | New |
slide_channel_partner_view_kanban |
slide.channel.partner.view.kanban | slide.channel.partner | kanban | New |
slide_channel_partner_view_pivot |
slide.channel.partner.view.pivot | slide.channel.partner | pivot | New |
slide_channel_partner_view_search |
slide.channel.partner.search | slide.channel.partner | search | New |
slide_channel_partner_view_tree |
slide.channel.partner.list | slide.channel.partner | list | New |
slide_channel_tag_group_view_form |
slide.channel.tag.group.view.form | slide.channel.tag.group | form | New |
slide_channel_tag_group_view_search |
slide.channel.tag.group.view.search | slide.channel.tag.group | search | New |
slide_channel_tag_group_view_tree |
slide.channel.tag.group.view.list | slide.channel.tag.group | list | New |
slide_channel_tag_view_form |
slide.channel.tag.view.form | slide.channel.tag | form | New |
slide_channel_tag_view_search |
slide.channel.tag.view.search | slide.channel.tag | search | New |
slide_channel_tag_view_tree |
slide.channel.tag.view.list | slide.channel.tag | list | New |
slide_channel_view_form_add |
slide.channel.view.form.add | slide.channel | form | New |
slide_channel_view_graph |
slide.channel.view.graph | slide.channel | graph | New |
slide_channel_view_kanban |
slide.channel.view.kanban | slide.channel | kanban | New |
slide_channel_view_pivot |
slide.channel.view.pivot | slide.channel | pivot | New |
slide_channel_view_search |
slide.channel.view.search | slide.channel | search | New |
slide_channel_view_tree |
slide.channel.view.list | slide.channel | list | New |
slide_channel_view_tree_report |
slide.channel.view.list.report | slide.channel | list | New |
slide_content_detailed |
Slide: Detailed Content | ir.ui.view | qweb | New |
slide_embed_view_search |
slide.embed.view.search | slide.embed | search | New |
slide_embed_view_tree |
slide.embed.view.list | slide.embed | list | New |
slide_fullscreen |
Fullscreen | ir.ui.view | qweb | New |
slide_fullscreen_sidebar_category |
Slides category template for fullscreen view side bar | ir.ui.view | qweb | New |
slide_main |
Slide Detailed View | ir.ui.view | qweb | New |
slide_question_view_form |
slide.question.view.form | slide.question | form | New |
slide_question_view_search |
slide.question.view.search | slide.question | search | New |
slide_question_view_tree |
slide.question.view.list | slide.question | list | New |
slide_question_view_tree_report |
slide.question.view.list.report | slide.question | list | New |
slide_searchbar_input_snippet_options |
slide search bar snippet options | ir.ui.view | qweb | Inherits website.searchbar_input_snippet_options |
slide_share_link |
slide_share_link | ir.ui.view | qweb | New |
slide_share_modal |
slide_share_modal | ir.ui.view | qweb | New |
slide_share_modal_body |
slide_share_modal_body | ir.ui.view | qweb | New |
slide_share_modal_header |
slide_share_modal_header | ir.ui.view | qweb | New |
slide_share_social |
Slides Media Share | ir.ui.view | qweb | New |
slide_sidebar_done_button |
Sidebar Done Button | ir.ui.view | qweb | New |
slide_slide_partner_view_form |
slide.slide.partner.view.form | slide.slide.partner | form | New |
slide_slide_partner_view_search |
slide.slide.partner.view.search | slide.slide.partner | search | New |
slide_slide_partner_view_tree |
slide.slide.partner.view.list | slide.slide.partner | list | New |
slide_slide_view_graph |
slide.slide.view.graph | slide.slide | graph | New |
slide_slide_view_kanban |
slide.slide.view.kanban | slide.slide | kanban | New |
slide_slide_view_pivot |
slide.slide.view.pivot | slide.slide | pivot | New |
slide_slide_view_tree_report |
slide.slide.view.list.report | slide.slide | list | New |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slides_home_achievements_small |
Users | ir.ui.view | qweb | New |
slides_home_user_achievements_small |
User Achievements | ir.ui.view | qweb | New |
slides_home_user_profile_small |
User Profile | ir.ui.view | qweb | New |
slides_home_users_small |
Users | ir.ui.view | qweb | New |
slides_misc_user_image |
User Avatar | ir.ui.view | qweb | New |
snippet_options |
Slides Snippet Options | ir.ui.view | qweb | Inherits website.snippet_options |
toggle_latest_achievements |
Display Achievements | ir.ui.view | qweb | Inherits website_slides.slides_home_achievements_small |
toggle_leaderboard |
Display Leaderboard | ir.ui.view | qweb | Inherits website_slides.slides_home_users_small |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_quickkarma_card |
User QuickKarma Card | ir.ui.view | qweb | New |
view_slide_channel_form |
slide.channel.view.form | slide.channel | form | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_form_wo_channel_id |
slide.slide.form.wo.channel_id | slide.slide | field | Inherits view_slide_slide_form |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.list | slide.slide | list | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.list | slide.tag | list | New |
No new fields.
Public methods (0)No public methods.
challenge_category
Selection
ondelete={'slides': 'set default'}
selection_add=[('slides', 'Website / Slides')]
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
module_mass_mailing_slides
Boolean
string='Mailing'
module_website_sale_slides
Boolean
string='Sell on eCommerce'
module_website_slides_forum
Boolean
string='Forum'
module_website_slides_survey
Boolean
string='Certifications'
website_slide_google_app_key
Char
readonly=False
related='website_id.website_slide_google_app_key'
No public methods.
No new fields.
Public methods (1)write(self, vals)
slide_channel_company_count
Integer
compute='_compute_slide_channel_company_count'
groups='website_slides.group_website_slides_officer'
args: 'Company Course Count'
slide_channel_completed_ids
One2many → slide.channel
compute='_compute_slide_channel_values'
groups='website_slides.group_website_slides_officer'
search='_search_slide_channel_completed_ids'
string='Completed Courses'
args: 'slide.channel'
slide_channel_count
Integer
compute='_compute_slide_channel_values'
groups='website_slides.group_website_slides_officer'
args: 'Course Count'
slide_channel_ids
Many2many → slide.channel
compute='_compute_slide_channel_values'
groups='website_slides.group_website_slides_officer'
search='_search_slide_channel_ids'
string='eLearning Courses'
args: 'slide.channel'
action_view_courses(self)
No new fields.
Public methods (3)create(self, vals_list)
get_gamification_redirection_data(self)
write(self, vals)
comment
Text
help='This comment will be displayed to the user if they select this answer'
translate=True
args: 'Comment'
is_correct
Boolean
question_id
Many2one → slide.question
ondelete='cascade'
required=True
string='Question'
args: 'slide.question'
sequence
Integer
text_value
Char
required=True
translate=True
args: 'Answer'
No public methods.
access_token
Char
copy=False
default=_default_access_token
args: 'Security Token'
active
Boolean
default=True
tracking=100
allow_comment
Boolean
default=True
help='Allow Attendees to like and comment your content and to submit reviews on your course.'
args: 'Allow rating on Course'
can_comment
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Comment'
can_review
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Review'
can_upload
Boolean
compute='_compute_can_upload'
compute_sudo=False
args: 'Can Upload'
can_vote
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Vote'
channel_partner_all_ids
One2many → slide.channel.partner
groups='website_slides.group_website_slides_officer'
string='All Attendees Information'
args: 'slide.channel.partner', 'channel_id'
channel_partner_ids
One2many → slide.channel.partner
domain=[('member_status', '!=', 'invited')]
groups='website_slides.group_website_slides_officer'
string='Enrolled Attendees Information'
args: 'slide.channel.partner', 'channel_id'
channel_type
Selection
default='training'
required=True
string='Course type'
args: [('training', 'Training'), ('documentation', 'Documentation')]
color
Integer
default=0
help='Used to decorate kanban view'
args: 'Color Index'
completed
Boolean
compute='_compute_user_statistics'
compute_sudo=False
args: 'Done'
completed_template_id
Many2one → mail.template
default=<expr>
domain=[('model', '=', 'slide.channel.partner')]
help='Defines the email your Attendees will receive once they reach the end of your course.'
string='Completion Notification'
args: 'mail.template'
completion
Integer
compute='_compute_user_statistics'
compute_sudo=False
args: 'Completion'
description
Html
help='The description that is displayed on top of the course page, just below the title'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Description'
description_html
Html
sanitize_attributes=False
sanitize_form=False
translate=tools.html_translate
args: 'Detailed Description'
description_short
Html
help='The description that is displayed on the course card'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Short Description'
enroll
Selection
compute='_compute_enroll'
copy=False
default='public'
help='Defines how people can enroll to your Course.'
readonly=False
required=True
store=True
string='Enroll Policy'
args: [('public', 'Open'), ('invite', 'On Invitation')]
enroll_group_ids
Many2many → res.groups
help='Members of those groups are automatically added as members of the channel.'
string='Auto Enroll Groups'
args: 'res.groups'
enroll_msg
Html
default=_get_default_enroll_msg
help='Message explaining the enroll process'
sanitize_attributes=False
translate=tools.html_translate
args: 'Enroll Message'
has_requested_access
Boolean
compute='_compute_has_requested_access'
compute_sudo=False
string='Access Requested'
is_member
Boolean
compute='_compute_membership_values'
help='Is the attendee actively enrolled.'
search='_search_is_member'
string='Is Enrolled Attendee'
is_member_invited
Boolean
compute='_compute_membership_values'
help='Is the invitation for this attendee pending.'
search='_search_is_member_invited'
string='Is Invited Attendee'
karma_gen_channel_finish
Integer
default=10
string='Course finished'
karma_gen_channel_rank
Integer
default=5
string='Course ranked'
karma_review
Integer
default=10
help='Karma needed to add a review on the course'
args: 'Add Review'
karma_slide_comment
Integer
default=3
help='Karma needed to add a comment on a slide of this course'
args: 'Add Comment'
karma_slide_vote
Integer
default=3
help='Karma needed to like/dislike a slide of this course.'
args: 'Vote'
members_all_count
Integer
compute='_compute_members_counts'
args: '# Enrolled or Invited Attendees'
members_completed_count
Integer
compute='_compute_members_counts'
args: '# Completed Attendees'
members_count
Integer
compute='_compute_members_counts'
args: '# Enrolled Attendees'
members_engaged_count
Integer
compute='_compute_members_counts'
help="Active attendees include both 'joined' and 'ongoing' attendees."
args: '# Active Attendees'
members_invited_count
Integer
compute='_compute_members_counts'
args: '# Invited Attendees'
name
Char
required=True
translate=True
args: 'Name'
nbr_article
Integer
compute='_compute_slides_statistics'
store=True
args: 'Articles'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Infographics'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Videos'
partner_has_new_content
Boolean
compute='_compute_partner_has_new_content'
compute_sudo=False
partner_ids
Many2many → res.partner
compute='_compute_partners'
help='Enrolled partners in the course'
search='_search_partner_ids'
string='Attendees'
args: 'res.partner'
prerequisite_channel_ids
Many2many → slide.channel
domain="[('id', '!=', id), ('visibility', '=', visibility), ('website_published', '=', website_published)]"
help='Prerequisite courses to complete before accessing this one.'
string='Prerequisites'
args: 'slide.channel', 'slide_channel_prerequisite_slide_channel_rel', 'channel_id', 'prerequisite_channel_id'
prerequisite_of_channel_ids
Many2many → slide.channel
help='Courses that have this course as prerequisite.'
string='Prerequisite Of'
args: 'slide.channel', 'slide_channel_prerequisite_slide_channel_rel', 'prerequisite_channel_id', 'channel_id'
prerequisite_user_has_completed
Boolean
compute='_compute_prerequisite_user_has_completed'
args: 'Has Completed Prerequisite'
promote_strategy
Selection
copy=False
default='latest'
help='Defines the content that will be promoted on the course home page'
required=False
string='Featured Content'
args: [('latest', 'Latest Created'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed'), ('specific', 'Select Manually'), ('none', 'None')]
promoted_slide_id
Many2one → slide.slide
copy=False
string='Promoted Slide'
args: 'slide.slide'
publish_template_id
Many2one → mail.template
default=<expr>
domain=[('model', '=', 'slide.slide')]
help='Defines the email your Attendees will receive each time you upload new content.'
string='New Content Notification'
args: 'mail.template'
rating_avg_stars
Float
compute='_compute_rating_stats'
compute_sudo=True
digits=(16, 1)
args: 'Rating Average (Stars)'
sequence
Integer
default=10
share_channel_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a channel'
string='Channel Share Template'
args: 'mail.template'
share_slide_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Share Template'
args: 'mail.template'
slide_category_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Categories'
args: 'slide.slide'
slide_content_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Content'
args: 'slide.slide'
slide_ids
One2many → slide.slide
copy=True
string='Slides and categories'
args: 'slide.slide', 'channel_id'
slide_last_update
Date
compute='_compute_slide_last_update'
store=True
args: 'Last Update'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Slide User Data'
args: 'slide.slide.partner', 'channel_id'
tag_ids
Many2many → slide.channel.tag
help='Used to categorize and filter displayed channels/courses'
string='Tags'
args: 'slide.channel.tag', 'slide_channel_tag_rel', 'channel_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Contents'
total_time
Float
compute='_compute_slides_statistics'
digits=(10, 2)
store=True
args: 'Duration'
total_views
Integer
compute='_compute_slides_statistics'
store=True
args: 'Visits'
total_votes
Integer
compute='_compute_slides_statistics'
store=True
args: 'Votes'
upload_group_ids
Many2many → res.groups
help='Group of users allowed to publish contents on a documentation course.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
user_id
Many2one → res.users
default=<expr>
string='Responsible'
args: 'res.users'
visibility
Selection
default='public'
help='Defines who can access your courses and their content.'
required=True
string='Show Course To'
args: [('public', 'Everyone'), ('connected', 'Signed In'), ('members', 'Course Attendees')]
website_default_background_image_url
Char
compute='_compute_website_default_background_image_url'
args: 'Background image URL'
action_channel_enroll(self)
action_channel_invite(self)
action_grant_access(self, partner_id)
action_redirect_to_completed_members(self)
action_redirect_to_engaged_members(self)
action_redirect_to_invited_members(self)
action_redirect_to_members(self, status_filter='')
action_refuse_access(self, partner_id)
action_request_access(self)
action_view_ratings(self)
action_view_slides(self)
copy_data(self, default=None)
create(self, vals_list)
get_backend_menu_id(self)
message_post(self, *, parent_id=False, subtype_id=False, **kwargs)
open_website_url(self)
toggle_active(self)
unlink(self)
write(self, vals)
attachment_ids
Many2many → ir.attachment
string='Attachments'
args: 'ir.attachment'
channel_id
Many2one → slide.channel
required=True
string='Course'
args: 'slide.channel'
channel_invite_url
Char
compute='_compute_channel_invite_url'
args: 'Course Link'
channel_published
Boolean
related='channel_id.is_published'
channel_visibility
Selection
related='channel_id.visibility'
enroll_mode
Boolean
help='Whether invited partners will be added as enrolled. Otherwise, they will be added as invited.'
readonly=True
args: 'Enroll partners'
partner_ids
Many2many → res.partner
string='Recipients'
args: 'res.partner'
send_email
Boolean
compute='_compute_send_email'
readonly=False
store=True
args: 'Send Email'
action_invite(self)
active
Boolean
default=True
string='Active'
channel_enroll
Selection
related='channel_id.enroll'
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
required=True
string='Course'
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
channel_user_id
Many2one → res.users
related='channel_id.user_id'
string='Responsible'
args: 'res.users'
channel_visibility
Selection
related='channel_id.visibility'
channel_website_id
Many2one → website
related='channel_id.website_id'
string='Website'
args: 'website'
completed_slides_count
Integer
default=0
args: '# Completed Contents'
completion
Integer
aggregator='avg'
default=0
args: '% Completed Contents'
invitation_link
Char
compute='_compute_invitation_link'
args: 'Invitation Link'
last_invitation_date
Datetime
member_status
Selection
default='joined'
readonly=True
required=True
string='Attendee Status'
args: [('invited', 'Invite Sent'), ('joined', 'Joined'), ('ongoing', 'Ongoing'), ('completed', 'Finished')]
next_slide_id
Many2one → slide.slide
compute='_compute_next_slide_id'
string='Next Lesson'
args: 'slide.slide'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
unlink(self)
channel_ids
Many2many → slide.channel
string='Channels'
args: 'slide.channel', 'slide_channel_tag_rel', 'tag_id', 'channel_id'
color
Integer
default=<expr>
help='Tag color used in both backend and website. No color means no display in kanban or front-end, to distinguish internal tags from public categorization tags'
string='Color Index'
group_id
Many2one → slide.channel.tag.group
index=True
ondelete='cascade'
required=True
string='Group'
args: 'slide.channel.tag.group'
group_sequence
Integer
index=True
readonly=True
related='group_id.sequence'
store=True
args: 'Group sequence'
name
Char
required=True
translate=True
args: 'Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
No public methods.
name
Char
required=True
translate=True
args: 'Group Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
tag_ids
One2many → slide.channel.tag
string='Tags'
args: 'slide.channel.tag', 'group_id'
No public methods.
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
string='Presentation'
args: 'slide.slide'
url
Char
website_name
Char
compute='_compute_website_name'
args: 'Website'
No public methods.
answer_ids
One2many → slide.answer
copy=True
string='Answer'
args: 'slide.answer', 'question_id'
answers_validation_error
Char
compute='_compute_answers_validation_error'
args: 'Error on Answers'
attempts_avg
Float
compute='_compute_statistics'
digits=(6, 2)
groups='website_slides.group_website_slides_officer'
attempts_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
done_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
question
Char
required=True
translate=True
args: 'Question Name'
sequence
Integer
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
string='Content'
args: 'slide.slide'
No public methods.
active
Boolean
default=True
tracking=100
binary_content
Binary
attachment=True
args: 'File'
can_self_mark_completed
Boolean
compute='_compute_mark_complete_actions'
help='The slide can be marked as completed even without opening it'
args: 'Can Mark Completed'
can_self_mark_uncompleted
Boolean
compute='_compute_mark_complete_actions'
help='The slide can be marked as not completed and the progression'
args: 'Can Mark Uncompleted'
category_id
Many2one → slide.slide
compute='_compute_category_id'
store=True
string='Section'
args: 'slide.slide'
channel_allow_comment
Boolean
related='channel_id.allow_comment'
string='Allows comment'
channel_id
Many2one → slide.channel
ondelete='cascade'
required=True
string='Course'
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
string='Channel type'
comments_count
Integer
compute='_compute_comments_count'
args: 'Number of comments'
completion_time
Float
compute='_compute_category_completion_time'
digits=(10, 4)
readonly=False
recursive=True
store=True
args: 'Duration'
date_published
Datetime
copy=False
readonly=True
tracking=False
args: 'Publish Date'
description
Html
sanitize_attributes=False
sanitize_overridable=True
translate=True
args: 'Description'
dislikes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Dislikes'
document_binary_content
Binary
readonly=False
related='binary_content'
args: 'PDF Content'
document_google_url
Char
help='Link of the document (we currently only support Google Drive as source)'
readonly=False
related='url'
args: 'Document Link'
embed_code
Html
compute='_compute_embed_code'
readonly=True
sanitize=False
args: 'Embed Code'
embed_code_external
Html
compute='_compute_embed_code'
help="Same as 'Embed Code' but used to embed the content on an external website."
readonly=True
sanitize=False
args: 'External Embed Code'
embed_count
Integer
compute='_compute_embed_counts'
args: '# of Embeds'
embed_ids
One2many → slide.embed
string='External Slide Embeds'
args: 'slide.embed', 'slide_id'
google_drive_id
Char
compute='_compute_google_drive_id'
args: 'Google Drive ID of the external URL'
html_content
Html
help="Custom HTML content for slides of category 'Article'."
sanitize_attributes=False
sanitize_form=False
sanitize_overridable=True
translate=True
args: 'HTML Content'
image_1920
Image
compute='_compute_image_1920'
readonly=False
store=True
image_binary_content
Binary
readonly=False
related='binary_content'
args: 'Image Content'
image_google_url
Char
help='Link of the image (we currently only support Google Drive as source)'
readonly=False
related='url'
args: 'Image Link'
is_category
Boolean
default=False
args: 'Is a category'
is_new_slide
Boolean
compute='_compute_is_new_slide'
args: 'Is New Slide'
is_preview
Boolean
default=False
help="The course is accessible by anyone : the users don't need to join the channel to access the content of the course."
args: 'Allow Preview'
is_published
Boolean
tracking=1
likes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Likes'
name
Char
required=True
translate=True
args: 'Title'
nbr_article
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Articles'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Images'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Videos'
partner_ids
Many2many → res.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers'
args: 'res.partner', 'slide_slide_partner', 'slide_id', 'partner_id'
public_views
Integer
copy=False
default=0
readonly=True
args: '# of Public Views'
question_ids
One2many → slide.question
copy=True
string='Questions'
args: 'slide.question', 'slide_id'
questions_count
Integer
compute='_compute_questions_count'
string='Numbers of Questions'
quiz_first_attempt_reward
Integer
default=10
args: 'Reward: first attempt'
quiz_fourth_attempt_reward
Integer
default=2
args: 'Reward: every attempt after the third try'
quiz_second_attempt_reward
Integer
default=7
args: 'Reward: second attempt'
quiz_third_attempt_reward
Integer
default=5
args: 'Reward: third attempt'
sequence
Integer
default=0
args: 'Sequence'
slide_category
Selection
default='document'
required=True
string='Category'
args: [('infographic', 'Image'), ('article', 'Article'), ('document', 'Document'), ('video', 'Video'), ('quiz', 'Quiz')]
slide_icon_class
Char
compute='_compute_slide_icon_class'
args: 'Slide Icon fa-class'
slide_ids
One2many → slide.slide
string='Content'
args: 'slide.slide', 'category_id'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers information'
args: 'slide.slide.partner', 'slide_id'
slide_resource_downloadable
Boolean
default=False
help='Allow the user to download the content of the slide.'
args: 'Allow Download'
slide_resource_ids
One2many → slide.slide.resource
copy=True
string='Additional Resource for this slide'
args: 'slide.slide.resource', 'slide_id'
slide_type
Selection
compute='_compute_slide_type'
help='Subtype of the slide category, allows more precision on the actual file type / source type.'
readonly=False
store=True
string='Slide Type'
args: [('image', 'Image'), ('article', 'Article'), ('quiz', 'Quiz'), ('pdf', 'PDF'), ('sheet', 'Sheet (Excel, Google Sheet, ...)'), ('doc', 'Document (Word, Google Doc, ...)'), ('slides', 'Slides (PowerPoint, Google Slides, ...)'), ('youtube_video', 'YouTube Video'), ('google_drive_video', 'Google Drive Video'), ('vimeo_video', 'Vimeo Video')]
slide_views
Integer
compute='_compute_slide_views'
store=True
args: '# of Website Views'
source_type
Selection
default='local_file'
required=True
args: [('local_file', 'Upload from Device'), ('external', 'Retrieve from Google Drive')]
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: '# Total Views'
url
Char
help='URL of the Google Drive file or URL of the YouTube video'
args: 'External URL'
user_has_completed
Boolean
compute='_compute_user_membership_id'
compute_sudo=False
args: 'Is Member'
user_has_completed_category
Boolean
compute='_compute_category_completed'
args: 'Is Category Completed'
user_id
Many2one → res.users
default=<expr>
string='Uploaded by'
args: 'res.users'
user_membership_id
Many2one → slide.slide.partner
compute='_compute_user_membership_id'
compute_sudo=False
help='Subscriber information for the current logged in user'
string='Subscriber information'
args: 'slide.slide.partner'
user_vote
Integer
compute='_compute_user_membership_id'
compute_sudo=False
args: 'User vote'
video_source_type
Selection
compute='_compute_video_source_type'
string='Video Source'
args: [('youtube', 'YouTube'), ('google_drive', 'Google Drive'), ('vimeo', 'Vimeo')]
video_url
Char
help='Link of the video (we support YouTube, Google Drive and Vimeo as sources)'
readonly=False
related='url'
args: 'Video Link'
vimeo_id
Char
compute='_compute_vimeo_id'
args: 'Video Vimeo ID'
website_id
Many2one
readonly=True
related='channel_id.website_id'
website_published
Boolean
tracking=False
website_share_url
Char
compute='_compute_website_share_url'
args: 'Share URL'
youtube_id
Char
compute='_compute_youtube_id'
args: 'Video YouTube ID'
action_dislike(self)
action_like(self)
action_mark_completed(self)
action_mark_uncompleted(self)
action_set_viewed(self, quiz_attempts_inc=False)
action_view_embeds(self)
copy_data(self, default=None)
create(self, vals_list)
get_backend_menu_id(self)
message_post(self, *, message_type='notification', **kwargs)
open_website_url(self)
toggle_active(self)
unlink(self)
write(self, values)
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
related='slide_id.channel_id'
store=True
string='Channel'
args: 'slide.channel'
completed
Boolean
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
quiz_attempts_count
Integer
default=0
args: 'Quiz attempts count'
slide_category
Selection
related='slide_id.slide_category'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
string='Content'
args: 'slide.slide'
vote
Integer
default=0
args: 'Vote'
create(self, vals_list)
write(self, values)
data
Binary
compute='_compute_reset_resources'
readonly=False
store=True
args: 'Resource'
download_url
Char
compute='_compute_download_url'
args: 'Download URL'
file_name
Char
store=True
link
Char
compute='_compute_reset_resources'
readonly=False
store=True
args: 'Link'
name
Char
compute='_compute_name'
readonly=False
store=True
args: 'Name'
resource_type
Selection
required=True
args: [('file', 'File'), ('url', 'Link')]
sequence
Integer
string='Sequence'
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
args: 'slide.slide'
No public methods.
name
Char
required=True
translate=True
args: 'Name'
No public methods.
website_slide_google_app_key
Char
groups='base.group_system'
args: 'Google Doc Key'
get_suggested_controllers(self)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
achievement_card |
Achivement Card | ir.ui.view | qweb | New |
course_card |
Course Card | ir.ui.view | qweb | New |
course_card_information |
Course Information | ir.ui.view | qweb | New |
course_card_information_arrow |
New Content Ribbon | ir.ui.view | qweb | Inherits website_slides.course_card_information |
course_join |
course_join | ir.ui.view | qweb | New |
course_main |
Course Main | ir.ui.view | qweb | New |
course_nav |
Course Navigation Header | ir.ui.view | qweb | New |
course_promoted_slide |
Documentation Course content: promoted slide | ir.ui.view | qweb | New |
course_sidebar |
Course Sidebar (infos, CTA) | ir.ui.view | qweb | New |
course_slides_cards |
Documentation Course content: cards / categories | ir.ui.view | qweb | New |
course_slides_list |
Training Course content: list | ir.ui.view | qweb | New |
course_slides_list_placeholder |
Course Placeholder Content | ir.ui.view | qweb | New |
course_slides_list_sample |
Course Sample Content | ir.ui.view | qweb | New |
course_slides_list_slide |
Slide template for a training channel | ir.ui.view | qweb | New |
courses_all |
Odoo All Courses | ir.ui.view | qweb | New |
courses_footer |
courses_footer | ir.ui.view | qweb | New |
courses_home |
Odoo Courses Homepage | ir.ui.view | qweb | New |
display_course |
display_course | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
gamification_karma_tracking_view_search |
gamification.karma.tracking.view.search.inherit.website.slides | gamification.karma.tracking | xpath | Inherits gamification.gamification_karma_tracking_view_search |
join_course_link |
Join Course Link | ir.ui.view | qweb | New |
lesson_card |
Lesson Card | ir.ui.view | qweb | New |
lesson_content_quiz |
Lesson: Quiz specific content | ir.ui.view | qweb | New |
lesson_content_quiz_add_buttons |
Lesson: Quiz Add Buttons template | ir.ui.view | qweb | New |
lesson_content_quiz_question |
Lesson: Quiz question template | ir.ui.view | qweb | New |
mail_notification_channel_invite |
mail_notification_channel_invite | ir.ui.view | qweb | New |
profile_access_denied |
profile_access_denied | ir.ui.view | qweb | Inherits website_profile.profile_access_denied |
rating_rating_view_form_slides |
rating.rating.view.form.slides | rating.rating | form | New |
rating_rating_view_graph_slide_channel |
rating.rating.view.graph.slides | rating.rating | graph | New |
rating_rating_view_pivot_slide_channel |
rating.rating.view.pivot.slides | rating.rating | pivot | New |
rating_rating_view_search_slide_channel |
rating.rating.view.search.slides | rating.rating | xpath | Inherits rating.rating_rating_view_search |
rating_rating_view_tree_slide_channel |
rating.rating.view.tree.slides | rating.rating | tree | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.website.slides | res.config.settings | xpath | Inherits website.res_config_settings_view_form |
res_partner_view_form |
res.partner.view.form.inherit.slides | res.partner | xpath | Inherits base.view_partner_form |
slide_aside_card |
Related Slide | ir.ui.view | qweb | New |
slide_aside_documentation |
Slide: Sidebar in Documentation | ir.ui.view | qweb | New |
slide_aside_training |
Slide: Sidebar in Training | ir.ui.view | qweb | New |
slide_aside_training_category |
Category item for the slide detailed view list | ir.ui.view | qweb | New |
slide_channel_invite_view_form |
slide.channel.invite.view.form | slide.channel.invite | form | New |
slide_channel_pages_kanban_view |
Course Pages Kanban | slide.channel | xpath | Inherits slide_channel_view_kanban |
slide_channel_pages_tree_view |
Course Pages Tree | slide.channel | xpath | Inherits slide_channel_view_tree |
slide_channel_partner_view_graph |
slide.channel.partner.view.graph | slide.channel.partner | graph | New |
slide_channel_partner_view_kanban |
slide.channel.partner.view.kanban | slide.channel.partner | kanban | New |
slide_channel_partner_view_pivot |
slide.channel.partner.view.pivot | slide.channel.partner | pivot | New |
slide_channel_partner_view_search |
slide.channel.partner.search | slide.channel.partner | search | New |
slide_channel_partner_view_tree |
slide.channel.partner.tree | slide.channel.partner | tree | New |
slide_channel_tag_group_view_form |
slide.channel.tag.group.view.form | slide.channel.tag.group | form | New |
slide_channel_tag_group_view_search |
slide.channel.tag.group.view.search | slide.channel.tag.group | search | New |
slide_channel_tag_group_view_tree |
slide.channel.tag.group.view.tree | slide.channel.tag.group | tree | New |
slide_channel_tag_view_form |
slide.channel.tag.view.form | slide.channel.tag | form | New |
slide_channel_tag_view_search |
slide.channel.tag.view.search | slide.channel.tag | search | New |
slide_channel_tag_view_tree |
slide.channel.tag.view.tree | slide.channel.tag | tree | New |
slide_channel_view_form_add |
slide.channel.view.form.add | slide.channel | form | New |
slide_channel_view_graph |
slide.channel.view.graph | slide.channel | graph | New |
slide_channel_view_kanban |
slide.channel.view.kanban | slide.channel | kanban | New |
slide_channel_view_pivot |
slide.channel.view.pivot | slide.channel | pivot | New |
slide_channel_view_search |
slide.channel.view.search | slide.channel | search | New |
slide_channel_view_tree |
slide.channel.view.tree | slide.channel | tree | New |
slide_channel_view_tree_report |
slide.channel.view.tree.report | slide.channel | tree | New |
slide_content_detailed |
Slide: Detailed Content | ir.ui.view | qweb | New |
slide_embed_view_search |
slide.embed.view.search | slide.embed | search | New |
slide_embed_view_tree |
slide.embed.view.tree | slide.embed | tree | New |
slide_fullscreen |
Fullscreen | ir.ui.view | qweb | New |
slide_fullscreen_sidebar_category |
Slides category template for fullscreen view side bar | ir.ui.view | qweb | New |
slide_main |
Slide Detailed View | ir.ui.view | qweb | New |
slide_question_view_form |
slide.question.view.form | slide.question | form | New |
slide_question_view_search |
slide.question.view.search | slide.question | search | New |
slide_question_view_tree |
slide.question.view.tree | slide.question | tree | New |
slide_question_view_tree_report |
slide.question.view.tree.report | slide.question | tree | New |
slide_searchbar_input_snippet_options |
slide search bar snippet options | ir.ui.view | qweb | Inherits website.searchbar_input_snippet_options |
slide_share_link |
slide_share_link | ir.ui.view | qweb | New |
slide_share_modal |
slide_share_modal | ir.ui.view | qweb | New |
slide_share_modal_body |
slide_share_modal_body | ir.ui.view | qweb | New |
slide_share_modal_header |
slide_share_modal_header | ir.ui.view | qweb | New |
slide_share_social |
Slides Media Share | ir.ui.view | qweb | New |
slide_sidebar_done_button |
Sidebar Done Button | ir.ui.view | qweb | New |
slide_slide_partner_view_form |
slide.slide.partner.view.form | slide.slide.partner | form | New |
slide_slide_partner_view_search |
slide.slide.partner.view.search | slide.slide.partner | search | New |
slide_slide_partner_view_tree |
slide.slide.partner.view.tree | slide.slide.partner | tree | New |
slide_slide_view_graph |
slide.slide.view.graph | slide.slide | graph | New |
slide_slide_view_kanban |
slide.slide.view.kanban | slide.slide | kanban | New |
slide_slide_view_pivot |
slide.slide.view.pivot | slide.slide | pivot | New |
slide_slide_view_tree_report |
slide.slide.view.tree.report | slide.slide | tree | New |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slides_home_achievements_small |
Users | ir.ui.view | qweb | New |
slides_home_user_achievements_small |
User Achievements | ir.ui.view | qweb | New |
slides_home_user_profile_small |
User Profile | ir.ui.view | qweb | New |
slides_home_users_small |
Users | ir.ui.view | qweb | New |
slides_misc_user_image |
User Avatar | ir.ui.view | qweb | New |
snippet_options |
Slides Snippet Options | ir.ui.view | qweb | Inherits website.snippet_options |
toggle_latest_achievements |
Display Achievements | ir.ui.view | qweb | Inherits website_slides.slides_home_achievements_small |
toggle_leaderboard |
Display Leaderboard | ir.ui.view | qweb | Inherits website_slides.slides_home_users_small |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_quickkarma_card |
User QuickKarma Card | ir.ui.view | qweb | New |
view_slide_channel_form |
slide.channel.view.form | slide.channel | form | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_form_wo_channel_id |
slide.slide.form.wo.channel_id | slide.slide | field | Inherits view_slide_slide_form |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.tree | slide.slide | tree | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.tree | slide.tag | tree | New |
No new fields.
Public methods (0)No public methods.
challenge_category
Selection
ondelete={'slides': 'set default'}
selection_add=[('slides', 'Website / Slides')]
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
module_mass_mailing_slides
Boolean
string='Mailing'
module_website_sale_slides
Boolean
string='Sell on eCommerce'
module_website_slides_forum
Boolean
string='Forum'
module_website_slides_survey
Boolean
string='Certifications'
website_slide_google_app_key
Char
readonly=False
related='website_id.website_slide_google_app_key'
No public methods.
No new fields.
Public methods (1)write(self, vals)
slide_channel_company_count
Integer
compute='_compute_slide_channel_company_count'
groups='website_slides.group_website_slides_officer'
args: 'Company Course Count'
slide_channel_completed_ids
One2many → slide.channel
compute='_compute_slide_channel_values'
groups='website_slides.group_website_slides_officer'
search='_search_slide_channel_completed_ids'
string='Completed Courses'
args: 'slide.channel'
slide_channel_count
Integer
compute='_compute_slide_channel_values'
groups='website_slides.group_website_slides_officer'
args: 'Course Count'
slide_channel_ids
Many2many → slide.channel
compute='_compute_slide_channel_values'
groups='website_slides.group_website_slides_officer'
search='_search_slide_channel_ids'
string='eLearning Courses'
args: 'slide.channel'
action_view_courses(self)
No new fields.
Public methods (3)create(self, vals_list)
get_gamification_redirection_data(self)
write(self, vals)
comment
Text
help='This comment will be displayed to the user if they select this answer'
translate=True
args: 'Comment'
is_correct
Boolean
question_id
Many2one → slide.question
ondelete='cascade'
required=True
string='Question'
args: 'slide.question'
sequence
Integer
text_value
Char
required=True
translate=True
args: 'Answer'
No public methods.
No new fields.
Public methods (0)No public methods.
access_token
Char
copy=False
default=_default_access_token
args: 'Security Token'
active
Boolean
default=True
tracking=100
allow_comment
Boolean
default=True
help='Allow Attendees to like and comment your content and to submit reviews on your course.'
args: 'Allow rating on Course'
can_comment
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Comment'
can_review
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Review'
can_upload
Boolean
compute='_compute_can_upload'
compute_sudo=False
args: 'Can Upload'
can_vote
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Vote'
channel_partner_all_ids
One2many → slide.channel.partner
groups='website_slides.group_website_slides_officer'
string='All Attendees Information'
args: 'slide.channel.partner', 'channel_id'
channel_partner_ids
One2many → slide.channel.partner
domain=[('member_status', '!=', 'invited')]
groups='website_slides.group_website_slides_officer'
string='Enrolled Attendees Information'
args: 'slide.channel.partner', 'channel_id'
channel_type
Selection
default='training'
required=True
string='Course type'
args: [('training', 'Training'), ('documentation', 'Documentation')]
color
Integer
default=0
help='Used to decorate kanban view'
args: 'Color Index'
completed
Boolean
compute='_compute_user_statistics'
compute_sudo=False
args: 'Done'
completed_template_id
Many2one → mail.template
default=<expr>
domain=[('model', '=', 'slide.channel.partner')]
help='Defines the email your Attendees will receive once they reach the end of your course.'
string='Completion Notification'
args: 'mail.template'
completion
Integer
compute='_compute_user_statistics'
compute_sudo=False
args: 'Completion'
description
Html
help='The description that is displayed on top of the course page, just below the title'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Description'
description_html
Html
sanitize_attributes=False
sanitize_form=False
translate=tools.html_translate
args: 'Detailed Description'
description_short
Html
help='The description that is displayed on the course card'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Short Description'
enroll
Selection
compute='_compute_enroll'
copy=False
default='public'
help='Defines how people can enroll to your Course.'
readonly=False
required=True
store=True
string='Enroll Policy'
args: [('public', 'Open'), ('invite', 'On Invitation')]
enroll_group_ids
Many2many → res.groups
help='Members of those groups are automatically added as members of the channel.'
string='Auto Enroll Groups'
args: 'res.groups'
enroll_msg
Html
default=_get_default_enroll_msg
help='Message explaining the enroll process'
sanitize_attributes=False
translate=tools.html_translate
args: 'Enroll Message'
has_requested_access
Boolean
compute='_compute_has_requested_access'
compute_sudo=False
string='Access Requested'
is_member
Boolean
compute='_compute_membership_values'
help='Is the attendee actively enrolled.'
search='_search_is_member'
string='Is Enrolled Attendee'
is_member_invited
Boolean
compute='_compute_membership_values'
help='Is the invitation for this attendee pending.'
search='_search_is_member_invited'
string='Is Invited Attendee'
karma_gen_channel_finish
Integer
default=10
string='Course finished'
karma_gen_channel_rank
Integer
default=5
string='Course ranked'
karma_review
Integer
default=10
help='Karma needed to add a review on the course'
args: 'Add Review'
karma_slide_comment
Integer
default=3
help='Karma needed to add a comment on a slide of this course'
args: 'Add Comment'
karma_slide_vote
Integer
default=3
help='Karma needed to like/dislike a slide of this course.'
args: 'Vote'
members_all_count
Integer
compute='_compute_members_counts'
args: '# Enrolled or Invited Attendees'
members_completed_count
Integer
compute='_compute_members_counts'
args: '# Completed Attendees'
members_count
Integer
compute='_compute_members_counts'
args: '# Enrolled Attendees'
members_engaged_count
Integer
compute='_compute_members_counts'
help="Active attendees include both 'joined' and 'ongoing' attendees."
args: '# Active Attendees'
members_invited_count
Integer
compute='_compute_members_counts'
args: '# Invited Attendees'
name
Char
required=True
translate=True
args: 'Name'
nbr_article
Integer
compute='_compute_slides_statistics'
store=True
args: 'Articles'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Infographics'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Videos'
partner_has_new_content
Boolean
compute='_compute_partner_has_new_content'
compute_sudo=False
partner_ids
Many2many → res.partner
compute='_compute_partners'
help='Enrolled partners in the course'
search='_search_partner_ids'
string='Attendees'
args: 'res.partner'
prerequisite_channel_ids
Many2many → slide.channel
domain="[('id', '!=', id), ('visibility', '=', visibility), ('website_published', '=', website_published)]"
help='Prerequisite courses to complete before accessing this one.'
string='Prerequisites'
args: 'slide.channel', 'slide_channel_prerequisite_slide_channel_rel', 'channel_id', 'prerequisite_channel_id'
prerequisite_of_channel_ids
Many2many → slide.channel
help='Courses that have this course as prerequisite.'
string='Prerequisite Of'
args: 'slide.channel', 'slide_channel_prerequisite_slide_channel_rel', 'prerequisite_channel_id', 'channel_id'
prerequisite_user_has_completed
Boolean
compute='_compute_prerequisite_user_has_completed'
args: 'Has Completed Prerequisite'
promote_strategy
Selection
copy=False
default='latest'
help='Defines the content that will be promoted on the course home page'
required=False
string='Featured Content'
args: [('latest', 'Latest Created'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed'), ('specific', 'Select Manually'), ('none', 'None')]
promoted_slide_id
Many2one → slide.slide
copy=False
string='Promoted Slide'
args: 'slide.slide'
publish_template_id
Many2one → mail.template
default=<expr>
domain=[('model', '=', 'slide.slide')]
help='Defines the email your Attendees will receive each time you upload new content.'
string='New Content Notification'
args: 'mail.template'
rating_avg_stars
Float
compute='_compute_rating_stats'
compute_sudo=True
digits=(16, 1)
args: 'Rating Average (Stars)'
sequence
Integer
default=10
share_channel_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a channel'
string='Channel Share Template'
args: 'mail.template'
share_slide_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Share Template'
args: 'mail.template'
slide_category_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Categories'
args: 'slide.slide'
slide_content_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Content'
args: 'slide.slide'
slide_ids
One2many → slide.slide
copy=True
string='Slides and categories'
args: 'slide.slide', 'channel_id'
slide_last_update
Date
compute='_compute_slide_last_update'
store=True
args: 'Last Update'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Slide User Data'
args: 'slide.slide.partner', 'channel_id'
tag_ids
Many2many → slide.channel.tag
help='Used to categorize and filter displayed channels/courses'
string='Tags'
args: 'slide.channel.tag', 'slide_channel_tag_rel', 'channel_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Contents'
total_time
Float
compute='_compute_slides_statistics'
digits=(10, 2)
store=True
args: 'Duration'
total_views
Integer
compute='_compute_slides_statistics'
store=True
args: 'Visits'
total_votes
Integer
compute='_compute_slides_statistics'
store=True
args: 'Votes'
upload_group_ids
Many2many → res.groups
help='Group of users allowed to publish contents on a documentation course.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
user_id
Many2one → res.users
default=<expr>
string='Responsible'
args: 'res.users'
visibility
Selection
default='public'
help='Defines who can access your courses and their content.'
required=True
string='Show Course To'
args: [('public', 'Everyone'), ('connected', 'Signed In'), ('members', 'Course Attendees')]
website_default_background_image_url
Char
compute='_compute_website_default_background_image_url'
args: 'Background image URL'
action_channel_enroll(self)
action_channel_invite(self)
action_grant_access(self, partner_id)
action_redirect_to_completed_members(self)
action_redirect_to_engaged_members(self)
action_redirect_to_invited_members(self)
action_redirect_to_members(self, status_filter='')
action_refuse_access(self, partner_id)
action_request_access(self)
action_view_ratings(self)
action_view_slides(self)
copy_data(self, default=None)
create(self, vals_list)
get_backend_menu_id(self)
message_post(self, *, parent_id=False, subtype_id=False, **kwargs)
open_website_url(self)
toggle_active(self)
unlink(self)
write(self, vals)
attachment_ids
Many2many → ir.attachment
string='Attachments'
args: 'ir.attachment'
channel_id
Many2one → slide.channel
required=True
string='Course'
args: 'slide.channel'
channel_invite_url
Char
compute='_compute_channel_invite_url'
args: 'Course Link'
channel_published
Boolean
related='channel_id.is_published'
channel_visibility
Selection
related='channel_id.visibility'
enroll_mode
Boolean
help='Whether invited partners will be added as enrolled. Otherwise, they will be added as invited.'
readonly=True
args: 'Enroll partners'
partner_ids
Many2many → res.partner
string='Recipients'
args: 'res.partner'
send_email
Boolean
compute='_compute_send_email'
readonly=False
store=True
args: 'Send Email'
action_invite(self)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
string='Active'
channel_enroll
Selection
related='channel_id.enroll'
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
required=True
string='Course'
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
channel_user_id
Many2one → res.users
related='channel_id.user_id'
string='Responsible'
args: 'res.users'
channel_visibility
Selection
related='channel_id.visibility'
channel_website_id
Many2one → website
related='channel_id.website_id'
string='Website'
args: 'website'
completed_slides_count
Integer
default=0
args: '# Completed Contents'
completion
Integer
default=0
group_operator='avg'
args: '% Completed Contents'
invitation_link
Char
compute='_compute_invitation_link'
args: 'Invitation Link'
last_invitation_date
Datetime
member_status
Selection
default='joined'
readonly=True
required=True
string='Attendee Status'
args: [('invited', 'Invite Sent'), ('joined', 'Joined'), ('ongoing', 'Ongoing'), ('completed', 'Finished')]
next_slide_id
Many2one → slide.slide
compute='_compute_next_slide_id'
string='Next Lesson'
args: 'slide.slide'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
unlink(self)
channel_ids
Many2many → slide.channel
string='Channels'
args: 'slide.channel', 'slide_channel_tag_rel', 'tag_id', 'channel_id'
color
Integer
default=<expr>
help='Tag color used in both backend and website. No color means no display in kanban or front-end, to distinguish internal tags from public categorization tags'
string='Color Index'
group_id
Many2one → slide.channel.tag.group
index=True
ondelete='cascade'
required=True
string='Group'
args: 'slide.channel.tag.group'
group_sequence
Integer
index=True
readonly=True
related='group_id.sequence'
store=True
args: 'Group sequence'
name
Char
required=True
translate=True
args: 'Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
No public methods.
name
Char
required=True
translate=True
args: 'Group Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
tag_ids
One2many → slide.channel.tag
string='Tags'
args: 'slide.channel.tag', 'group_id'
No public methods.
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
string='Presentation'
args: 'slide.slide'
url
Char
website_name
Char
compute='_compute_website_name'
args: 'Website'
No public methods.
answer_ids
One2many → slide.answer
copy=True
string='Answer'
args: 'slide.answer', 'question_id'
answers_validation_error
Char
compute='_compute_answers_validation_error'
args: 'Error on Answers'
attempts_avg
Float
compute='_compute_statistics'
digits=(6, 2)
groups='website_slides.group_website_slides_officer'
attempts_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
done_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
question
Char
required=True
translate=True
args: 'Question Name'
sequence
Integer
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
string='Content'
args: 'slide.slide'
No public methods.
active
Boolean
default=True
tracking=100
binary_content
Binary
attachment=True
args: 'File'
can_self_mark_completed
Boolean
compute='_compute_mark_complete_actions'
help='The slide can be marked as completed even without opening it'
args: 'Can Mark Completed'
can_self_mark_uncompleted
Boolean
compute='_compute_mark_complete_actions'
help='The slide can be marked as not completed and the progression'
args: 'Can Mark Uncompleted'
category_id
Many2one → slide.slide
compute='_compute_category_id'
store=True
string='Section'
args: 'slide.slide'
channel_allow_comment
Boolean
related='channel_id.allow_comment'
string='Allows comment'
channel_id
Many2one → slide.channel
ondelete='cascade'
required=True
string='Course'
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
string='Channel type'
comments_count
Integer
compute='_compute_comments_count'
args: 'Number of comments'
completion_time
Float
compute='_compute_category_completion_time'
digits=(10, 4)
readonly=False
recursive=True
store=True
args: 'Duration'
date_published
Datetime
copy=False
readonly=True
tracking=False
args: 'Publish Date'
description
Html
sanitize_attributes=False
sanitize_overridable=True
translate=True
args: 'Description'
dislikes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Dislikes'
document_binary_content
Binary
readonly=False
related='binary_content'
args: 'PDF Content'
document_google_url
Char
help='Link of the document (we currently only support Google Drive as source)'
readonly=False
related='url'
args: 'Document Link'
embed_code
Html
compute='_compute_embed_code'
readonly=True
sanitize=False
args: 'Embed Code'
embed_code_external
Html
compute='_compute_embed_code'
help="Same as 'Embed Code' but used to embed the content on an external website."
readonly=True
sanitize=False
args: 'External Embed Code'
embed_count
Integer
compute='_compute_embed_counts'
args: '# of Embeds'
embed_ids
One2many → slide.embed
string='External Slide Embeds'
args: 'slide.embed', 'slide_id'
google_drive_id
Char
compute='_compute_google_drive_id'
args: 'Google Drive ID of the external URL'
html_content
Html
help="Custom HTML content for slides of category 'Article'."
sanitize_attributes=False
sanitize_form=False
sanitize_overridable=True
translate=True
args: 'HTML Content'
image_1920
Image
compute='_compute_image_1920'
readonly=False
store=True
image_binary_content
Binary
readonly=False
related='binary_content'
args: 'Image Content'
image_google_url
Char
help='Link of the image (we currently only support Google Drive as source)'
readonly=False
related='url'
args: 'Image Link'
is_category
Boolean
default=False
args: 'Is a category'
is_new_slide
Boolean
compute='_compute_is_new_slide'
args: 'Is New Slide'
is_preview
Boolean
default=False
help="The course is accessible by anyone : the users don't need to join the channel to access the content of the course."
args: 'Allow Preview'
is_published
Boolean
tracking=1
likes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Likes'
name
Char
required=True
translate=True
args: 'Title'
nbr_article
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Articles'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Images'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Videos'
partner_ids
Many2many → res.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers'
args: 'res.partner', 'slide_slide_partner', 'slide_id', 'partner_id'
public_views
Integer
copy=False
default=0
readonly=True
args: '# of Public Views'
question_ids
One2many → slide.question
copy=True
string='Questions'
args: 'slide.question', 'slide_id'
questions_count
Integer
compute='_compute_questions_count'
string='Numbers of Questions'
quiz_first_attempt_reward
Integer
default=10
args: 'Reward: first attempt'
quiz_fourth_attempt_reward
Integer
default=2
args: 'Reward: every attempt after the third try'
quiz_second_attempt_reward
Integer
default=7
args: 'Reward: second attempt'
quiz_third_attempt_reward
Integer
default=5
args: 'Reward: third attempt'
sequence
Integer
default=0
args: 'Sequence'
slide_category
Selection
default='document'
required=True
string='Category'
args: [('infographic', 'Image'), ('article', 'Article'), ('document', 'Document'), ('video', 'Video'), ('quiz', 'Quiz')]
slide_icon_class
Char
compute='_compute_slide_icon_class'
args: 'Slide Icon fa-class'
slide_ids
One2many → slide.slide
string='Content'
args: 'slide.slide', 'category_id'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers information'
args: 'slide.slide.partner', 'slide_id'
slide_resource_downloadable
Boolean
default=False
help='Allow the user to download the content of the slide.'
args: 'Allow Download'
slide_resource_ids
One2many → slide.slide.resource
copy=True
string='Additional Resource for this slide'
args: 'slide.slide.resource', 'slide_id'
slide_type
Selection
compute='_compute_slide_type'
help='Subtype of the slide category, allows more precision on the actual file type / source type.'
readonly=False
store=True
string='Slide Type'
args: [('image', 'Image'), ('article', 'Article'), ('quiz', 'Quiz'), ('pdf', 'PDF'), ('sheet', 'Sheet (Excel, Google Sheet, ...)'), ('doc', 'Document (Word, Google Doc, ...)'), ('slides', 'Slides (PowerPoint, Google Slides, ...)'), ('youtube_video', 'YouTube Video'), ('google_drive_video', 'Google Drive Video'), ('vimeo_video', 'Vimeo Video')]
slide_views
Integer
compute='_compute_slide_views'
store=True
args: '# of Website Views'
source_type
Selection
default='local_file'
required=True
args: [('local_file', 'Upload from Device'), ('external', 'Retrieve from Google Drive')]
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: '# Total Views'
url
Char
help='URL of the Google Drive file or URL of the YouTube video'
args: 'External URL'
user_has_completed
Boolean
compute='_compute_user_membership_id'
compute_sudo=False
args: 'Is Member'
user_has_completed_category
Boolean
compute='_compute_category_completed'
args: 'Is Category Completed'
user_id
Many2one → res.users
default=<expr>
string='Uploaded by'
args: 'res.users'
user_membership_id
Many2one → slide.slide.partner
compute='_compute_user_membership_id'
compute_sudo=False
help='Subscriber information for the current logged in user'
string='Subscriber information'
args: 'slide.slide.partner'
user_vote
Integer
compute='_compute_user_membership_id'
compute_sudo=False
args: 'User vote'
video_source_type
Selection
compute='_compute_video_source_type'
string='Video Source'
args: [('youtube', 'YouTube'), ('google_drive', 'Google Drive'), ('vimeo', 'Vimeo')]
video_url
Char
help='Link of the video (we support YouTube, Google Drive and Vimeo as sources)'
readonly=False
related='url'
args: 'Video Link'
vimeo_id
Char
compute='_compute_vimeo_id'
args: 'Video Vimeo ID'
website_id
Many2one
readonly=True
related='channel_id.website_id'
website_published
Boolean
tracking=False
website_share_url
Char
compute='_compute_website_share_url'
args: 'Share URL'
youtube_id
Char
compute='_compute_youtube_id'
args: 'Video YouTube ID'
action_dislike(self)
action_like(self)
action_mark_completed(self)
action_mark_uncompleted(self)
action_set_viewed(self, quiz_attempts_inc=False)
action_view_embeds(self)
copy(self, default=None)
create(self, vals_list)
get_backend_menu_id(self)
message_post(self, *, message_type='notification', **kwargs)
open_website_url(self)
toggle_active(self)
unlink(self)
write(self, values)
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
related='slide_id.channel_id'
store=True
string='Channel'
args: 'slide.channel'
completed
Boolean
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
quiz_attempts_count
Integer
default=0
args: 'Quiz attempts count'
slide_category
Selection
related='slide_id.slide_category'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
string='Content'
args: 'slide.slide'
vote
Integer
default=0
args: 'Vote'
create(self, vals_list)
write(self, values)
data
Binary
compute='_compute_reset_resources'
readonly=False
store=True
args: 'Resource'
download_url
Char
compute='_compute_download_url'
args: 'Download URL'
file_name
Char
store=True
link
Char
compute='_compute_reset_resources'
readonly=False
store=True
args: 'Link'
name
Char
compute='_compute_name'
readonly=False
store=True
args: 'Name'
resource_type
Selection
required=True
args: [('file', 'File'), ('url', 'Link')]
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
args: 'slide.slide'
No public methods.
name
Char
required=True
translate=True
args: 'Name'
No public methods.
website_slide_google_app_key
Char
groups='base.group_system'
args: 'Google Doc Key'
get_suggested_controllers(self)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
achievement_card |
Achivement Card | ir.ui.view | qweb | New |
course_card |
Course Card | ir.ui.view | qweb | New |
course_card_information |
Course Information | ir.ui.view | qweb | New |
course_card_information_arrow |
New Content Ribbon | ir.ui.view | qweb | Inherits website_slides.course_card_information |
course_join |
course_join | ir.ui.view | qweb | New |
course_main |
Course Main | ir.ui.view | qweb | New |
course_nav |
Course Navigation Header | ir.ui.view | qweb | New |
course_promoted_slide |
Documentation Course content: promoted slide | ir.ui.view | qweb | New |
course_sidebar |
Course Sidebar (infos, CTA) | ir.ui.view | qweb | New |
course_slides_cards |
Documentation Course content: cards / categories | ir.ui.view | qweb | New |
course_slides_list |
Training Course content: list | ir.ui.view | qweb | New |
course_slides_list_sample |
Course Sample Content | ir.ui.view | qweb | New |
course_slides_list_slide |
Slide template for a training channel | ir.ui.view | qweb | New |
courses_all |
Odoo All Courses | ir.ui.view | qweb | New |
courses_footer |
courses_footer | ir.ui.view | qweb | New |
courses_home |
Odoo Courses Homepage | ir.ui.view | qweb | New |
display_course |
display_course | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
join_course_link |
Join Course Link | ir.ui.view | qweb | New |
lesson_card |
Lesson Card | ir.ui.view | qweb | New |
lesson_content_quiz |
Lesson: Quiz specific content | ir.ui.view | qweb | New |
lesson_content_quiz_add_buttons |
Lesson: Quiz Add Buttons template | ir.ui.view | qweb | New |
lesson_content_quiz_question |
Lesson: Quiz question template | ir.ui.view | qweb | New |
mail_notification_channel_invite |
mail_notification_channel_invite | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | Inherits website_profile.private_profile |
rating_rating_view_form_slides |
rating.rating.view.form.slides | rating.rating | form | New |
rating_rating_view_graph_slide_channel |
rating.rating.view.graph.slides | rating.rating | graph | New |
rating_rating_view_pivot_slide_channel |
rating.rating.view.pivot.slides | rating.rating | pivot | New |
rating_rating_view_search_slide_channel |
rating.rating.view.search.slides | rating.rating | xpath | Inherits rating.rating_rating_view_search |
rating_rating_view_tree_slide_channel |
rating.rating.view.tree.slides | rating.rating | tree | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.website.slides | res.config.settings | xpath | Inherits website.res_config_settings_view_form |
res_partner_view_form |
res.partner.view.form.inherit.slides | res.partner | xpath | Inherits base.view_partner_form |
slide_aside_card |
Related Slide | ir.ui.view | qweb | New |
slide_aside_documentation |
Slide: Sidebar in Documentation | ir.ui.view | qweb | New |
slide_aside_training |
Slide: Sidebar in Training | ir.ui.view | qweb | New |
slide_aside_training_category |
Category item for the slide detailed view list | ir.ui.view | qweb | New |
slide_channel_invite_view_form |
slide.channel.invite.view.form | slide.channel.invite | form | New |
slide_channel_pages_kanban_view |
Course Pages Kanban | slide.channel | xpath | Inherits slide_channel_view_kanban |
slide_channel_pages_tree_view |
Course Pages Tree | slide.channel | xpath | Inherits slide_channel_view_tree |
slide_channel_partner_view_kanban |
slide.channel.partner.view.kanban | slide.channel.partner | kanban | New |
slide_channel_partner_view_search |
slide.channel.partner.search | slide.channel.partner | search | New |
slide_channel_partner_view_tree |
slide.channel.partner.tree | slide.channel.partner | tree | New |
slide_channel_tag_group_view_form |
slide.channel.tag.group.view.form | slide.channel.tag.group | form | New |
slide_channel_tag_group_view_search |
slide.channel.tag.group.view.search | slide.channel.tag.group | search | New |
slide_channel_tag_group_view_tree |
slide.channel.tag.group.view.tree | slide.channel.tag.group | tree | New |
slide_channel_tag_view_form |
slide.channel.tag.view.form | slide.channel.tag | form | New |
slide_channel_tag_view_search |
slide.channel.tag.view.search | slide.channel.tag | search | New |
slide_channel_tag_view_tree |
slide.channel.tag.view.tree | slide.channel.tag | tree | New |
slide_channel_view_form_add |
slide.channel.view.form.add | slide.channel | form | New |
slide_channel_view_graph |
slide.channel.view.graph | slide.channel | graph | New |
slide_channel_view_kanban |
slide.channel.view.kanban | slide.channel | kanban | New |
slide_channel_view_pivot |
slide.channel.view.pivot | slide.channel | pivot | New |
slide_channel_view_search |
slide.channel.view.search | slide.channel | search | New |
slide_channel_view_tree |
slide.channel.view.tree | slide.channel | tree | New |
slide_channel_view_tree_report |
slide.channel.view.tree.report | slide.channel | tree | New |
slide_content_detailed |
Slide: Detailed Content | ir.ui.view | qweb | New |
slide_embed_view_search |
slide.embed.view.search | slide.embed | search | New |
slide_embed_view_tree |
slide.embed.view.tree | slide.embed | tree | New |
slide_fullscreen |
Fullscreen | ir.ui.view | qweb | New |
slide_fullscreen_sidebar_category |
Slides category template for fullscreen view side bar | ir.ui.view | qweb | New |
slide_icon |
slide_icon | ir.ui.view | qweb | New |
slide_main |
Slide Detailed View | ir.ui.view | qweb | New |
slide_question_view_form |
slide.question.view.form | slide.question | form | New |
slide_question_view_search |
slide.question.view.search | slide.question | search | New |
slide_question_view_tree |
slide.question.view.tree | slide.question | tree | New |
slide_question_view_tree_report |
slide.question.view.tree.report | slide.question | tree | New |
slide_searchbar_input_snippet_options |
slide search bar snippet options | ir.ui.view | qweb | Inherits website.searchbar_input_snippet_options |
slide_share_link |
slide_share_link | ir.ui.view | qweb | New |
slide_share_modal |
slide_share_modal | ir.ui.view | qweb | New |
slide_share_modal_body |
slide_share_modal_body | ir.ui.view | qweb | New |
slide_share_modal_header |
slide_share_modal_header | ir.ui.view | qweb | New |
slide_share_social |
Slides Media Share | ir.ui.view | qweb | New |
slide_sidebar_done_button |
Sidebar Done Button | ir.ui.view | qweb | New |
slide_slide_partner_view_form |
slide.slide.partner.view.form | slide.slide.partner | form | New |
slide_slide_partner_view_search |
slide.slide.partner.view.search | slide.slide.partner | search | New |
slide_slide_partner_view_tree |
slide.slide.partner.view.tree | slide.slide.partner | tree | New |
slide_slide_view_graph |
slide.slide.view.graph | slide.slide | graph | New |
slide_slide_view_kanban |
slide.slide.view.kanban | slide.slide | kanban | New |
slide_slide_view_pivot |
slide.slide.view.pivot | slide.slide | pivot | New |
slide_slide_view_tree_report |
slide.slide.view.tree.report | slide.slide | tree | New |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slides_home_achievements_small |
Users | ir.ui.view | qweb | New |
slides_home_user_achievements_small |
User Achievements | ir.ui.view | qweb | New |
slides_home_user_profile_small |
User Profile | ir.ui.view | qweb | New |
slides_home_users_small |
Users | ir.ui.view | qweb | New |
slides_misc_user_image |
User Avatar | ir.ui.view | qweb | New |
snippet_options |
Slides Snippet Options | ir.ui.view | qweb | Inherits website.snippet_options |
toggle_latest_achievements |
Display Achievements | ir.ui.view | qweb | Inherits website_slides.slides_home_achievements_small |
toggle_leaderboard |
Display Leaderboard | ir.ui.view | qweb | Inherits website_slides.slides_home_users_small |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_quickkarma_card |
User QuickKarma Card | ir.ui.view | qweb | New |
view_slide_channel_form |
slide.channel.view.form | slide.channel | form | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_form_wo_channel_id |
slide.slide.form.wo.channel_id | slide.slide | field | Inherits view_slide_slide_form |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.tree | slide.slide | tree | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.tree | slide.tag | tree | New |
challenge_category
Selection
ondelete={'slides': 'set default'}
selection_add=[('slides', 'Website / Slides')]
No public methods.
No new fields.
Public methods (0)No public methods.
module_mass_mailing_slides
Boolean
string='Mailing'
module_website_sale_slides
Boolean
string='Sell on eCommerce'
module_website_slides_forum
Boolean
string='Forum'
module_website_slides_survey
Boolean
string='Certifications'
website_slide_google_app_key
Char
readonly=False
related='website_id.website_slide_google_app_key'
No public methods.
No new fields.
Public methods (1)write(self, vals)
slide_channel_company_count
Integer
compute='_compute_slide_channel_company_count'
groups='website_slides.group_website_slides_officer'
args: 'Company Course Count'
slide_channel_completed_ids
One2many → slide.channel
compute='_compute_slide_channel_completed_ids'
groups='website_slides.group_website_slides_officer'
search='_search_slide_channel_completed_ids'
string='Completed Courses'
args: 'slide.channel'
slide_channel_count
Integer
compute='_compute_slide_channel_count'
groups='website_slides.group_website_slides_officer'
args: 'Course Count'
slide_channel_ids
Many2many → slide.channel
copy=False
groups='website_slides.group_website_slides_officer'
string='eLearning Courses'
args: 'slide.channel', 'slide_channel_partner', 'partner_id', 'channel_id'
action_view_courses(self)
No new fields.
Public methods (3)create(self, vals_list)
get_gamification_redirection_data(self)
write(self, vals)
comment
Text
help='This comment will be displayed to the user if they select this answer'
translate=True
args: 'Comment'
is_correct
Boolean
question_id
Many2one → slide.question
ondelete='cascade'
required=True
string='Question'
args: 'slide.question'
sequence
Integer
text_value
Char
required=True
translate=True
args: 'Answer'
No public methods.
access_token
Char
copy=False
default=_default_access_token
args: 'Security Token'
active
Boolean
default=True
tracking=100
allow_comment
Boolean
default=True
help='Allow Attendees to like and comment your content and to submit reviews on your course.'
args: 'Allow rating on Course'
can_comment
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Comment'
can_review
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Review'
can_upload
Boolean
compute='_compute_can_upload'
compute_sudo=False
args: 'Can Upload'
can_vote
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Vote'
channel_partner_ids
One2many → slide.channel.partner
depends=['partner_ids']
groups='website_slides.group_website_slides_officer'
string='Members Information'
args: 'slide.channel.partner', 'channel_id'
channel_type
Selection
default='training'
required=True
string='Course type'
args: [('training', 'Training'), ('documentation', 'Documentation')]
color
Integer
default=0
help='Used to decorate kanban view'
args: 'Color Index'
completed
Boolean
compute='_compute_user_statistics'
compute_sudo=False
args: 'Done'
completed_template_id
Many2one → mail.template
default=<expr>
domain=[('model', '=', 'slide.channel.partner')]
help='Defines the email your Attendees will receive once they reach the end of your course.'
string='Completion Notification'
args: 'mail.template'
completion
Integer
compute='_compute_user_statistics'
compute_sudo=False
args: 'Completion'
description
Html
help='The description that is displayed on top of the course page, just below the title'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Description'
description_html
Html
sanitize_attributes=False
sanitize_form=False
translate=tools.html_translate
args: 'Detailed Description'
description_short
Html
help='The description that is displayed on the course card'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Short Description'
enroll
Selection
copy=False
default='public'
help='Defines how people can enroll to your Course.'
required=True
string='Enroll Policy'
args: [('public', 'Public'), ('invite', 'On Invitation')]
enroll_group_ids
Many2many → res.groups
help='Members of those groups are automatically added as members of the channel.'
string='Auto Enroll Groups'
args: 'res.groups'
enroll_msg
Html
default=_get_default_enroll_msg
help='Message explaining the enroll process'
sanitize_attributes=False
translate=tools.html_translate
args: 'Enroll Message'
has_requested_access
Boolean
compute='_compute_has_requested_access'
compute_sudo=False
string='Access Requested'
is_member
Boolean
compute='_compute_is_member'
compute_sudo=False
string='Is Member'
karma_gen_channel_finish
Integer
default=10
string='Course finished'
karma_gen_channel_rank
Integer
default=5
string='Course ranked'
karma_gen_slide_vote
Integer
default=1
string='Lesson voted'
karma_review
Integer
default=10
help='Karma needed to add a review on the course'
args: 'Add Review'
karma_slide_comment
Integer
default=3
help='Karma needed to add a comment on a slide of this course'
args: 'Add Comment'
karma_slide_vote
Integer
default=3
help='Karma needed to like/dislike a slide of this course.'
args: 'Vote'
members_count
Integer
compute='_compute_members_count'
args: 'Attendees count'
members_done_count
Integer
compute='_compute_members_done_count'
args: 'Attendees Done Count'
name
Char
required=True
translate=True
args: 'Name'
nbr_article
Integer
compute='_compute_slides_statistics'
store=True
args: 'Articles'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Infographics'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Videos'
partner_has_new_content
Boolean
compute='_compute_partner_has_new_content'
compute_sudo=False
partner_ids
Many2many → res.partner
context={'active_test': False}
copy=False
depends=['channel_partner_ids']
help='All members of the channel.'
string='Members'
args: 'res.partner', 'slide_channel_partner', 'channel_id', 'partner_id'
promote_strategy
Selection
copy=False
default='latest'
help='Defines the content that will be promoted on the course home page'
required=False
string='Featured Content'
args: [('latest', 'Latest Created'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed'), ('specific', 'Select Manually'), ('none', 'None')]
promoted_slide_id
Many2one → slide.slide
copy=False
string='Promoted Slide'
args: 'slide.slide'
publish_template_id
Many2one → mail.template
default=<expr>
domain=[('model', '=', 'slide.slide')]
help='Defines the email your Attendees will receive each time you upload new content.'
string='New Content Notification'
args: 'mail.template'
rating_avg_stars
Float
compute='_compute_rating_stats'
compute_sudo=True
digits=(16, 1)
args: 'Rating Average (Stars)'
sequence
Integer
default=10
share_channel_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a channel'
string='Channel Share Template'
args: 'mail.template'
share_slide_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Share Template'
args: 'mail.template'
slide_category_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Categories'
args: 'slide.slide'
slide_content_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Content'
args: 'slide.slide'
slide_ids
One2many → slide.slide
copy=True
string='Slides and categories'
args: 'slide.slide', 'channel_id'
slide_last_update
Date
compute='_compute_slide_last_update'
store=True
args: 'Last Update'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Slide User Data'
args: 'slide.slide.partner', 'channel_id'
tag_ids
Many2many → slide.channel.tag
help='Used to categorize and filter displayed channels/courses'
string='Tags'
args: 'slide.channel.tag', 'slide_channel_tag_rel', 'channel_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Contents'
total_time
Float
compute='_compute_slides_statistics'
digits=(10, 2)
store=True
args: 'Duration'
total_views
Integer
compute='_compute_slides_statistics'
store=True
args: 'Visits'
total_votes
Integer
compute='_compute_slides_statistics'
store=True
args: 'Votes'
upload_group_ids
Many2many → res.groups
help='Group of users allowed to publish contents on a documentation course.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
user_id
Many2one → res.users
default=<expr>
string='Responsible'
args: 'res.users'
visibility
Selection
default='public'
help='Defines who can access your courses and their content.'
required=True
string='Visibility'
args: [('public', 'Open To All'), ('members', 'Members Only')]
website_background_image_url
Char
compute='_compute_website_background_image_url'
args: 'Background image URL'
action_add_member(self, **member_values)
action_channel_invite(self)
action_grant_access(self, partner_id)
action_redirect_to_done_members(self)
action_redirect_to_members(self, completed=False)
action_refuse_access(self, partner_id)
action_request_access(self)
action_view_ratings(self)
action_view_slides(self)
copy_data(self, default=None)
create(self, vals_list)
get_backend_menu_id(self)
message_post(self, *, parent_id=False, subtype_id=False, **kwargs)
open_website_url(self)
toggle_active(self)
write(self, vals)
attachment_ids
Many2many → ir.attachment
string='Attachments'
args: 'ir.attachment'
channel_id
Many2one → slide.channel
required=True
string='Slide channel'
args: 'slide.channel'
partner_ids
Many2many → res.partner
string='Recipients'
args: 'res.partner'
action_invite(self)
channel_enroll
Selection
related='channel_id.enroll'
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
required=True
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
channel_user_id
Many2one → res.users
related='channel_id.user_id'
string='Responsible'
args: 'res.users'
channel_visibility
Selection
related='channel_id.visibility'
channel_website_id
Many2one → website
related='channel_id.website_id'
string='Website'
args: 'website'
completed
Boolean
help='Channel validated, even if slides / lessons are added once done.'
args: 'Is Completed'
completed_slides_count
Integer
completion
Integer
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
unlink(self)
channel_ids
Many2many → slide.channel
string='Channels'
args: 'slide.channel', 'slide_channel_tag_rel', 'tag_id', 'channel_id'
color
Integer
default=<expr>
help='Tag color used in both backend and website. No color means no display in kanban or front-end, to distinguish internal tags from public categorization tags'
string='Color Index'
group_id
Many2one → slide.channel.tag.group
index=True
ondelete='cascade'
required=True
string='Group'
args: 'slide.channel.tag.group'
group_sequence
Integer
index=True
readonly=True
related='group_id.sequence'
store=True
args: 'Group sequence'
name
Char
required=True
translate=True
args: 'Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
No public methods.
name
Char
required=True
translate=True
args: 'Group Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
tag_ids
One2many → slide.channel.tag
string='Tags'
args: 'slide.channel.tag', 'group_id'
No public methods.
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
string='Presentation'
args: 'slide.slide'
url
Char
website_name
Char
compute='_compute_website_name'
args: 'Website'
No public methods.
answer_ids
One2many → slide.answer
copy=True
string='Answer'
args: 'slide.answer', 'question_id'
attempts_avg
Float
compute='_compute_statistics'
digits=(6, 2)
groups='website_slides.group_website_slides_officer'
attempts_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
done_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
question
Char
required=True
translate=True
args: 'Question Name'
sequence
Integer
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
string='Content'
args: 'slide.slide'
No public methods.
active
Boolean
default=True
tracking=100
binary_content
Binary
attachment=True
args: 'File'
can_self_mark_completed
Boolean
compute='_compute_mark_complete_actions'
help='The slide can be marked as completed even without opening it'
args: 'Can Mark Completed'
can_self_mark_uncompleted
Boolean
compute='_compute_mark_complete_actions'
help='The slide can be marked as not completed and the progression'
args: 'Can Mark Uncompleted'
category_id
Many2one → slide.slide
compute='_compute_category_id'
store=True
string='Section'
args: 'slide.slide'
channel_allow_comment
Boolean
related='channel_id.allow_comment'
string='Allows comment'
channel_id
Many2one → slide.channel
ondelete='cascade'
required=True
string='Course'
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
string='Channel type'
comments_count
Integer
compute='_compute_comments_count'
args: 'Number of comments'
completion_time
Float
digits=(10, 4)
args: 'Duration'
date_published
Datetime
copy=False
readonly=True
tracking=False
args: 'Publish Date'
description
Html
sanitize_attributes=False
sanitize_overridable=True
translate=True
args: 'Description'
dislikes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Dislikes'
document_binary_content
Binary
readonly=False
related='binary_content'
args: 'PDF Content'
document_google_url
Char
help='Link of the document (we currently only support Google Drive as source)'
readonly=False
related='url'
args: 'Document Link'
embed_code
Html
compute='_compute_embed_code'
readonly=True
sanitize=False
args: 'Embed Code'
embed_code_external
Html
compute='_compute_embed_code'
help="Same as 'Embed Code' but used to embed the content on an external website."
readonly=True
sanitize=False
args: 'External Embed Code'
embed_count
Integer
compute='_compute_embed_counts'
args: '# of Embeds'
embed_ids
One2many → slide.embed
string='External Slide Embeds'
args: 'slide.embed', 'slide_id'
google_drive_id
Char
compute='_compute_google_drive_id'
args: 'Google Drive ID of the external URL'
html_content
Html
help="Custom HTML content for slides of category 'Article'."
sanitize_attributes=False
sanitize_form=False
sanitize_overridable=True
translate=True
args: 'HTML Content'
image_1920
Image
compute='_compute_image_1920'
readonly=False
store=True
image_binary_content
Binary
readonly=False
related='binary_content'
args: 'Image Content'
image_google_url
Char
help='Link of the image (we currently only support Google Drive as source)'
readonly=False
related='url'
args: 'Image Link'
is_category
Boolean
default=False
args: 'Is a category'
is_new_slide
Boolean
compute='_compute_is_new_slide'
args: 'Is New Slide'
is_preview
Boolean
default=False
help="The course is accessible by anyone : the users don't need to join the channel to access the content of the course."
args: 'Allow Preview'
is_published
Boolean
tracking=1
likes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Likes'
name
Char
required=True
translate=True
args: 'Title'
nbr_article
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Articles'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Images'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Videos'
partner_ids
Many2many → res.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers'
args: 'res.partner', 'slide_slide_partner', 'slide_id', 'partner_id'
public_views
Integer
copy=False
default=0
readonly=True
args: '# of Public Views'
question_ids
One2many → slide.question
copy=True
string='Questions'
args: 'slide.question', 'slide_id'
questions_count
Integer
compute='_compute_questions_count'
string='Numbers of Questions'
quiz_first_attempt_reward
Integer
default=10
args: 'Reward: first attempt'
quiz_fourth_attempt_reward
Integer
default=2
args: 'Reward: every attempt after the third try'
quiz_second_attempt_reward
Integer
default=7
args: 'Reward: second attempt'
quiz_third_attempt_reward
Integer
default=5
args: 'Reward: third attempt'
sequence
Integer
default=0
args: 'Sequence'
slide_category
Selection
default='document'
required=True
string='Category'
args: [('infographic', 'Image'), ('article', 'Article'), ('document', 'Document'), ('video', 'Video'), ('quiz', 'Quiz')]
slide_ids
One2many → slide.slide
string='Content'
args: 'slide.slide', 'category_id'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers information'
args: 'slide.slide.partner', 'slide_id'
slide_resource_downloadable
Boolean
default=False
help='Allow the user to download the content of the slide.'
args: 'Allow Download'
slide_resource_ids
One2many → slide.slide.resource
copy=True
string='Additional Resource for this slide'
args: 'slide.slide.resource', 'slide_id'
slide_type
Selection
compute='_compute_slide_type'
help='Subtype of the slide category, allows more precision on the actual file type / source type.'
readonly=False
store=True
string='Slide Type'
args: [('image', 'Image'), ('article', 'Article'), ('quiz', 'Quiz'), ('pdf', 'PDF'), ('sheet', 'Sheet (Excel, Google Sheet, ...)'), ('doc', 'Document (Word, Google Doc, ...)'), ('slides', 'Slides (PowerPoint, Google Slides, ...)'), ('youtube_video', 'YouTube Video'), ('google_drive_video', 'Google Drive Video'), ('vimeo_video', 'Vimeo Video')]
slide_views
Integer
compute='_compute_slide_views'
store=True
args: '# of Website Views'
source_type
Selection
default='local_file'
required=True
args: [('local_file', 'Upload from Device'), ('external', 'Retrieve from Google Drive')]
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: '# Total Views'
url
Char
help='URL of the Google Drive file or URL of the YouTube video'
args: 'External URL'
user_has_completed
Boolean
compute='_compute_user_membership_id'
compute_sudo=False
args: 'Is Member'
user_id
Many2one → res.users
default=<expr>
string='Uploaded by'
args: 'res.users'
user_membership_id
Many2one → slide.slide.partner
compute='_compute_user_membership_id'
compute_sudo=False
help='Subscriber information for the current logged in user'
string='Subscriber information'
args: 'slide.slide.partner'
user_vote
Integer
compute='_compute_user_membership_id'
compute_sudo=False
args: 'User vote'
video_source_type
Selection
compute='_compute_video_source_type'
string='Video Source'
args: [('youtube', 'YouTube'), ('google_drive', 'Google Drive'), ('vimeo', 'Vimeo')]
video_url
Char
help='Link of the video (we support YouTube, Google Drive and Vimeo as sources)'
readonly=False
related='url'
args: 'Video Link'
vimeo_id
Char
compute='_compute_vimeo_id'
args: 'Video Vimeo ID'
website_id
Many2one
readonly=True
related='channel_id.website_id'
website_published
Boolean
tracking=False
website_share_url
Char
compute='_compute_website_share_url'
args: 'Share URL'
youtube_id
Char
compute='_compute_youtube_id'
args: 'Video YouTube ID'
action_dislike(self)
action_like(self)
action_mark_completed(self)
action_mark_uncompleted(self)
action_set_viewed(self, quiz_attempts_inc=False)
action_view_embeds(self)
copy(self, default=None)
create(self, vals_list)
get_backend_menu_id(self)
message_post(self, *, message_type='notification', **kwargs)
open_website_url(self)
toggle_active(self)
unlink(self)
write(self, values)
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
related='slide_id.channel_id'
store=True
string='Channel'
args: 'slide.channel'
completed
Boolean
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
quiz_attempts_count
Integer
default=0
args: 'Quiz attempts count'
slide_category
Selection
related='slide_id.slide_category'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
string='Content'
args: 'slide.slide'
vote
Integer
default=0
args: 'Vote'
create(self, vals_list)
write(self, values)
data
Binary
compute='_compute_reset_resources'
readonly=False
store=True
args: 'Resource'
file_name
Char
store=True
link
Char
compute='_compute_reset_resources'
readonly=False
store=True
args: 'Link'
name
Char
compute='_compute_name'
readonly=False
store=True
args: 'Name'
resource_type
Selection
required=True
args: [('file', 'File'), ('url', 'Link')]
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
args: 'slide.slide'
No public methods.
name
Char
required=True
translate=True
args: 'Name'
No public methods.
website_slide_google_app_key
Char
groups='base.group_system'
args: 'Google Doc Key'
get_suggested_controllers(self)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
achievement_card |
Achivement Card | ir.ui.view | qweb | New |
course_card |
Course Card | ir.ui.view | qweb | New |
course_card_information |
Course Information | ir.ui.view | qweb | New |
course_card_information_arrow |
New Content Ribbon | ir.ui.view | qweb | Inherits website_slides.course_card_information |
course_main |
Course Main | ir.ui.view | qweb | New |
course_nav |
Course Navigation Header | ir.ui.view | qweb | New |
course_promoted_slide |
Documentation Course content: promoted slide | ir.ui.view | qweb | New |
course_sidebar |
Course Sidebar (infos, CTA) | ir.ui.view | qweb | New |
course_slides_cards |
Documentation Course content: cards / categories | ir.ui.view | qweb | New |
course_slides_list |
Training Course content: list | ir.ui.view | qweb | New |
course_slides_list_sample |
Course Sample Content | ir.ui.view | qweb | New |
course_slides_list_slide |
Slide template for a training channel | ir.ui.view | qweb | New |
courses_all |
Odoo All Courses | ir.ui.view | qweb | New |
courses_footer |
courses_footer | ir.ui.view | qweb | New |
courses_home |
Odoo Courses Homepage | ir.ui.view | qweb | New |
display_course |
display_course | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
join_course_link |
Join Course Link | ir.ui.view | qweb | New |
lesson_card |
Lesson Card | ir.ui.view | qweb | New |
lesson_content_quiz |
Lesson: Quiz specific content | ir.ui.view | qweb | New |
lesson_content_quiz_add_buttons |
Lesson: Quiz Add Buttons template | ir.ui.view | qweb | New |
lesson_content_quiz_question |
Lesson: Quiz question template | ir.ui.view | qweb | New |
mail_notification_channel_invite |
mail_notification_channel_invite | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | Inherits website_profile.private_profile |
rating_rating_view_graph_slide_channel |
rating.rating.view.graph.slides | rating.rating | graph | New |
rating_rating_view_kanban_slide_channel |
rating.rating.view.kanban.slides | rating.rating | kanban | New |
rating_rating_view_pivot_slide_channel |
rating.rating.view.pivot.slides | rating.rating | pivot | New |
rating_rating_view_search_slide_channel |
rating.rating.view.search.slides | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_config_settings_view_form |
res.config.settings.view.form.inherit.website.slides | res.config.settings | xpath | Inherits website.res_config_settings_view_form |
res_partner_view_form |
res.partner.view.form.inherit.slides | res.partner | xpath | Inherits base.view_partner_form |
slide_aside_card |
Related Slide | ir.ui.view | qweb | New |
slide_aside_documentation |
Slide: Sidebar in Documentation | ir.ui.view | qweb | New |
slide_aside_training |
Slide: Sidebar in Training | ir.ui.view | qweb | New |
slide_aside_training_category |
Category item for the slide detailed view list | ir.ui.view | qweb | New |
slide_channel_invite_view_form |
slide.channel.invite.view.form | slide.channel.invite | form | New |
slide_channel_partner_view_kanban |
slide.channel.partner.view.kanban | slide.channel.partner | kanban | New |
slide_channel_partner_view_search |
slide.channel.partner.search | slide.channel.partner | search | New |
slide_channel_partner_view_tree |
slide.channel.partner.tree | slide.channel.partner | tree | New |
slide_channel_tag_group_view_form |
slide.channel.tag.group.view.form | slide.channel.tag.group | form | New |
slide_channel_tag_group_view_search |
slide.channel.tag.group.view.search | slide.channel.tag.group | search | New |
slide_channel_tag_group_view_tree |
slide.channel.tag.group.view.tree | slide.channel.tag.group | tree | New |
slide_channel_tag_view_form |
slide.channel.tag.view.form | slide.channel.tag | form | New |
slide_channel_tag_view_search |
slide.channel.tag.view.search | slide.channel.tag | search | New |
slide_channel_tag_view_tree |
slide.channel.tag.view.tree | slide.channel.tag | tree | New |
slide_channel_view_graph |
slide.channel.view.graph | slide.channel | graph | New |
slide_channel_view_kanban |
slide.channel.view.kanban | slide.channel | kanban | New |
slide_channel_view_search |
slide.channel.view.search | slide.channel | search | New |
slide_channel_view_tree |
slide.channel.view.tree | slide.channel | tree | New |
slide_channel_view_tree_report |
slide.channel.view.tree.report | slide.channel | tree | New |
slide_content_detailed |
Slide: Detailed Content | ir.ui.view | qweb | New |
slide_edit_options |
Edit Slide Options | ir.ui.view | qweb | Inherits website.user_navbar |
slide_fullscreen |
Fullscreen | ir.ui.view | qweb | New |
slide_fullscreen_sidebar_category |
Slides category template for fullscreen view side bar | ir.ui.view | qweb | New |
slide_icon |
slide_icon | ir.ui.view | qweb | New |
slide_main |
Slide Detailed View | ir.ui.view | qweb | New |
slide_question_view_form |
slide.question.view.form | slide.question | form | New |
slide_question_view_search |
slide.question.view.search | slide.question | search | New |
slide_question_view_tree |
slide.question.view.tree | slide.question | tree | New |
slide_question_view_tree_report |
slide.question.view.tree.report | slide.question | tree | New |
slide_searchbar_input_snippet_options |
slide search bar snippet options | ir.ui.view | qweb | Inherits website.searchbar_input_snippet_options |
slide_share_link |
slide_share_link | ir.ui.view | qweb | New |
slide_share_modal |
slide_share_modal | ir.ui.view | qweb | New |
slide_share_modal_body |
slide_share_modal_body | ir.ui.view | qweb | New |
slide_share_modal_header |
slide_share_modal_header | ir.ui.view | qweb | New |
slide_share_social |
Slides Media Share | ir.ui.view | qweb | New |
slide_slide_view_graph |
slide.slide.view.graph | slide.slide | graph | New |
slide_slide_view_kanban |
slide.slide.view.kanban | slide.slide | kanban | New |
slide_slide_view_pivot |
slide.slide.view.pivot | slide.slide | pivot | New |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slides_home_achievements_small |
Users | ir.ui.view | qweb | New |
slides_home_user_achievements_small |
User Achievements | ir.ui.view | qweb | New |
slides_home_user_profile_small |
User Profile | ir.ui.view | qweb | New |
slides_home_users_small |
Users | ir.ui.view | qweb | New |
slides_misc_user_image |
User Avatar | ir.ui.view | qweb | New |
toggle_latest_achievements |
Display Achievements | ir.ui.view | qweb | Inherits website_slides.slides_home_achievements_small |
toggle_leaderboard |
Display Leaderboard | ir.ui.view | qweb | Inherits website_slides.slides_home_users_small |
user_navbar_inherit_website_slides |
user_navbar_inherit_website_slides | ir.ui.view | qweb | Inherits website.user_navbar |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_quickkarma_card |
User QuickKarma Card | ir.ui.view | qweb | New |
view_slide_channel_form |
slide.channel.view.form | slide.channel | form | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_form_wo_channel_id |
slide.slide.form.wo.channel_id | slide.slide | field | Inherits view_slide_slide_form |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.tree | slide.slide | tree | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.tree | slide.tag | tree | New |
challenge_category
Selection
ondelete={'slides': 'set default'}
selection_add=[('slides', 'Website / Slides')]
No public methods.
No new fields.
Public methods (1)binary_content(self, xmlid=None, model='ir.attachment', id=None, field='datas', unique=False, filename=None, filename_field='name', download=False, mimetype=None, default_mimetype='application/octet-stream', access_token=None)
module_mass_mailing_slides
Boolean
string='Mailing'
module_website_sale_slides
Boolean
string='Sell on eCommerce'
module_website_slides_forum
Boolean
string='Forum'
module_website_slides_survey
Boolean
string='Certifications'
website_slide_google_app_key
Char
readonly=False
related='website_id.website_slide_google_app_key'
No public methods.
No new fields.
Public methods (1)write(self, vals)
slide_channel_company_count
Integer
compute='_compute_slide_channel_company_count'
groups='website_slides.group_website_slides_officer'
args: 'Company Course Count'
slide_channel_completed_ids
One2many → slide.channel
compute='_compute_slide_channel_completed_ids'
groups='website_slides.group_website_slides_officer'
search='_search_slide_channel_completed_ids'
string='Completed Courses'
args: 'slide.channel'
slide_channel_count
Integer
compute='_compute_slide_channel_count'
groups='website_slides.group_website_slides_officer'
args: 'Course Count'
slide_channel_ids
Many2many → slide.channel
copy=False
groups='website_slides.group_website_slides_officer'
string='eLearning Courses'
args: 'slide.channel', 'slide_channel_partner', 'partner_id', 'channel_id'
action_view_courses(self)
No new fields.
Public methods (3)create(self, vals_list)
get_gamification_redirection_data(self)
write(self, vals)
comment
Text
help='This comment will be displayed to the user if he selects this answer'
translate=True
args: 'Comment'
is_correct
Boolean
question_id
Many2one → slide.question
ondelete='cascade'
required=True
string='Question'
args: 'slide.question'
sequence
Integer
text_value
Char
required=True
translate=True
args: 'Answer'
No public methods.
access_token
Char
copy=False
default=_default_access_token
args: 'Security Token'
active
Boolean
default=True
tracking=100
allow_comment
Boolean
default=True
help='If checked it allows members to either:\n * like content and post comments on documentation course;\n * post comment and review on training course;'
args: 'Allow rating on Course'
can_comment
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Comment'
can_review
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Review'
can_upload
Boolean
compute='_compute_can_upload'
compute_sudo=False
args: 'Can Upload'
can_vote
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Vote'
channel_partner_ids
One2many → slide.channel.partner
depends=['partner_ids']
groups='website_slides.group_website_slides_officer'
string='Members Information'
args: 'slide.channel.partner', 'channel_id'
channel_type
Selection
default='training'
required=True
string='Course type'
args: [('training', 'Training'), ('documentation', 'Documentation')]
color
Integer
default=0
help='Used to decorate kanban view'
args: 'Color Index'
completed
Boolean
compute='_compute_user_statistics'
compute_sudo=False
args: 'Done'
completed_template_id
Many2one → mail.template
default=<expr>
help="Email attendees once they've finished the course"
string='Completion Email'
args: 'mail.template'
completion
Integer
compute='_compute_user_statistics'
compute_sudo=False
args: 'Completion'
description
Html
help='The description that is displayed on top of the course page, just below the title'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Description'
description_html
Html
sanitize_attributes=False
sanitize_form=False
translate=tools.html_translate
args: 'Detailed Description'
description_short
Html
help='The description that is displayed on the course card'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Short Description'
enroll
Selection
default='public'
help='Condition to enroll: everyone, on invite, on payment (sale bridge).'
required=True
string='Enroll Policy'
args: [('public', 'Public'), ('invite', 'On Invitation')]
enroll_group_ids
Many2many → res.groups
help='Members of those groups are automatically added as members of the channel.'
string='Auto Enroll Groups'
args: 'res.groups'
enroll_msg
Html
default=_get_default_enroll_msg
help='Message explaining the enroll process'
sanitize_attributes=False
translate=tools.html_translate
args: 'Enroll Message'
has_requested_access
Boolean
compute='_compute_has_requested_access'
compute_sudo=False
string='Access Requested'
is_member
Boolean
compute='_compute_is_member'
compute_sudo=False
string='Is Member'
karma_gen_channel_finish
Integer
default=10
string='Course finished'
karma_gen_channel_rank
Integer
default=5
string='Course ranked'
karma_gen_slide_vote
Integer
default=1
string='Lesson voted'
karma_review
Integer
default=10
help='Karma needed to add a review on the course'
args: 'Add Review'
karma_slide_comment
Integer
default=3
help='Karma needed to add a comment on a slide of this course'
args: 'Add Comment'
karma_slide_vote
Integer
default=3
help='Karma needed to like/dislike a slide of this course.'
args: 'Vote'
members_count
Integer
compute='_compute_members_count'
args: 'Attendees count'
members_done_count
Integer
compute='_compute_members_done_count'
args: 'Attendees Done Count'
name
Char
required=True
translate=True
args: 'Name'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Infographics'
nbr_presentation
Integer
compute='_compute_slides_statistics'
store=True
args: 'Presentations'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Videos'
nbr_webpage
Integer
compute='_compute_slides_statistics'
store=True
args: 'Webpages'
partner_has_new_content
Boolean
compute='_compute_partner_has_new_content'
compute_sudo=False
partner_ids
Many2many → res.partner
context={'active_test': False}
copy=False
depends=['channel_partner_ids']
help='All members of the channel.'
string='Members'
args: 'res.partner', 'slide_channel_partner', 'channel_id', 'partner_id'
promote_strategy
Selection
default='latest'
help="Depending the promote strategy, a slide will appear on the top of the course's page :\n * Latest Published : the slide created last.\n * Most Voted : the slide which has to most votes.\n * Most Viewed ; the slide which has been viewed the most.\n * Specific : You choose the slide to appear.\n * None : No slides will be shown.\n"
required=False
string='Promoted Content'
args: [('latest', 'Latest Published'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed'), ('specific', 'Specific'), ('none', 'None')]
promoted_slide_id
Many2one → slide.slide
string='Promoted Slide'
args: 'slide.slide'
publish_template_id
Many2one → mail.template
default=<expr>
help='Email attendees once a new content is published'
string='New Content Email'
args: 'mail.template'
rating_avg_stars
Float
compute='_compute_rating_stats'
compute_sudo=True
digits=(16, 1)
args: 'Rating Average (Stars)'
sequence
Integer
default=10
help='Display order'
share_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Share Template'
args: 'mail.template'
slide_category_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Categories'
args: 'slide.slide'
slide_content_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Slides'
args: 'slide.slide'
slide_ids
One2many → slide.slide
string='Slides and categories'
args: 'slide.slide', 'channel_id'
slide_last_update
Date
compute='_compute_slide_last_update'
store=True
args: 'Last Update'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Slide User Data'
args: 'slide.slide.partner', 'channel_id'
tag_ids
Many2many → slide.channel.tag
help='Used to categorize and filter displayed channels/courses'
string='Tags'
args: 'slide.channel.tag', 'slide_channel_tag_rel', 'channel_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
args: 'Content'
total_time
Float
compute='_compute_slides_statistics'
digits=(10, 2)
store=True
args: 'Duration'
total_views
Integer
compute='_compute_slides_statistics'
store=True
args: 'Visits'
total_votes
Integer
compute='_compute_slides_statistics'
store=True
args: 'Votes'
upload_group_ids
Many2many → res.groups
help='Group of users allowed to publish contents on a documentation course.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
user_id
Many2one → res.users
default=<expr>
string='Responsible'
args: 'res.users'
visibility
Selection
default='public'
help='Applied directly as ACLs. Allow to hide channels and their content for non members.'
required=True
string='Visibility'
args: [('public', 'Public'), ('members', 'Members Only')]
action_add_member(self, **member_values)
action_channel_invite(self)
action_grant_access(self, partner_id)
action_redirect_to_done_members(self)
action_redirect_to_members(self, completed=False)
action_refuse_access(self, partner_id)
action_request_access(self)
action_view_ratings(self)
action_view_slides(self)
create(self, vals)
get_backend_menu_id(self)
message_post(self, *, parent_id=False, subtype_id=False, **kwargs)
toggle_active(self)
write(self, vals)
attachment_ids
Many2many → ir.attachment
string='Attachments'
args: 'ir.attachment'
channel_id
Many2one → slide.channel
required=True
string='Slide channel'
args: 'slide.channel'
partner_ids
Many2many → res.partner
string='Recipients'
args: 'res.partner'
action_invite(self)
create(self, values)
channel_enroll
Selection
related='channel_id.enroll'
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
required=True
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
channel_user_id
Many2one → res.users
related='channel_id.user_id'
string='Responsible'
args: 'res.users'
channel_visibility
Selection
related='channel_id.visibility'
channel_website_id
Many2one → website
related='channel_id.website_id'
string='Website'
args: 'website'
completed
Boolean
help='Channel validated, even if slides / lessons are added once done.'
args: 'Is Completed'
completed_slides_count
Integer
completion
Integer
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
unlink(self)
channel_ids
Many2many → slide.channel
string='Channels'
args: 'slide.channel', 'slide_channel_tag_rel', 'tag_id', 'channel_id'
color
Integer
default=<expr>
help='Tag color used in both backend and website. No color means no display in kanban or front-end, to distinguish internal tags from public categorization tags'
string='Color Index'
group_id
Many2one → slide.channel.tag.group
index=True
required=True
string='Group'
args: 'slide.channel.tag.group'
group_sequence
Integer
index=True
readonly=True
related='group_id.sequence'
store=True
args: 'Group sequence'
name
Char
required=True
translate=True
args: 'Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
No public methods.
name
Char
required=True
translate=True
args: 'Group Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
tag_ids
One2many → slide.channel.tag
string='Tags'
args: 'slide.channel.tag', 'group_id'
No public methods.
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
string='Presentation'
args: 'slide.slide'
url
Char
required=True
args: 'Third Party Website URL'
No public methods.
answer_ids
One2many → slide.answer
string='Answer'
args: 'slide.answer', 'question_id'
attempts_avg
Float
compute='_compute_statistics'
digits=(6, 2)
groups='website_slides.group_website_slides_officer'
attempts_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
done_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
question
Char
required=True
translate=True
args: 'Question Name'
sequence
Integer
slide_id
Many2one → slide.slide
required=True
string='Content'
args: 'slide.slide'
No public methods.
active
Boolean
default=True
tracking=100
category_id
Many2one → slide.slide
compute='_compute_category_id'
store=True
string='Section'
args: 'slide.slide'
channel_allow_comment
Boolean
related='channel_id.allow_comment'
string='Allows comment'
channel_id
Many2one → slide.channel
required=True
string='Course'
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
string='Channel type'
comments_count
Integer
compute='_compute_comments_count'
args: 'Number of comments'
completion_time
Float
digits=(10, 4)
help='The estimated completion time for this slide'
args: 'Duration'
datas
Binary
attachment=True
args: 'Content'
date_published
Datetime
readonly=True
tracking=1
args: 'Publish Date'
description
Html
sanitize_attributes=False
translate=True
args: 'Description'
dislikes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Dislikes'
document_id
Char
help='Youtube or Google Document ID'
args: 'Document ID'
embed_code
Html
compute='_compute_embed_code'
readonly=True
sanitize=False
args: 'Embed Code'
embedcount_ids
One2many → slide.embed
string='Embed Count'
args: 'slide.embed', 'slide_id'
html_content
Html
help="Custom HTML content for slides of type 'Web Page'."
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'HTML Content'
is_category
Boolean
default=False
args: 'Is a category'
is_new_slide
Boolean
compute='_compute_is_new_slide'
args: 'Is New Slide'
is_preview
Boolean
default=False
help="The course is accessible by anyone : the users don't need to join the channel to access the content of the course."
args: 'Allow Preview'
likes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Likes'
link_ids
One2many → slide.slide.link
string='External URL for this slide'
args: 'slide.slide.link', 'slide_id'
mime_type
Char
name
Char
required=True
translate=True
args: 'Title'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Infographics'
nbr_presentation
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Presentations'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Videos'
nbr_webpage
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Webpages'
partner_ids
Many2many → res.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers'
args: 'res.partner', 'slide_slide_partner', 'slide_id', 'partner_id'
public_views
Integer
copy=False
args: '# of Public Views'
question_ids
One2many → slide.question
string='Questions'
args: 'slide.question', 'slide_id'
questions_count
Integer
compute='_compute_questions_count'
string='Numbers of Questions'
quiz_first_attempt_reward
Integer
default=10
args: 'Reward: first attempt'
quiz_fourth_attempt_reward
Integer
default=2
args: 'Reward: every attempt after the third try'
quiz_second_attempt_reward
Integer
default=7
args: 'Reward: second attempt'
quiz_third_attempt_reward
Integer
default=5
args: 'Reward: third attempt'
sequence
Integer
default=0
args: 'Sequence'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'category_id'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers information'
args: 'slide.slide.partner', 'slide_id'
slide_resource_downloadable
Boolean
default=True
help='Allow the user to download the content of the slide.'
args: 'Allow Download'
slide_resource_ids
One2many → slide.slide.resource
string='Additional Resource for this slide'
args: 'slide.slide.resource', 'slide_id'
slide_type
Selection
default='document'
help='The document type will be set automatically based on the document URL and properties (e.g. height and width for presentation and document).'
required=True
string='Type'
args: [('infographic', 'Infographic'), ('webpage', 'Web Page'), ('presentation', 'Presentation'), ('document', 'Document'), ('video', 'Video'), ('quiz', 'Quiz')]
slide_views
Integer
compute='_compute_slide_views'
store=True
args: '# of Website Views'
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: 'Views'
url
Char
help='Youtube or Google Document URL'
args: 'Document URL'
user_id
Many2one → res.users
default=<expr>
string='Uploaded by'
args: 'res.users'
user_membership_id
Many2one → slide.slide.partner
compute='_compute_user_membership_id'
compute_sudo=False
help='Subscriber information for the current logged in user'
string='Subscriber information'
args: 'slide.slide.partner'
user_vote
Integer
compute='_compute_user_membership_id'
compute_sudo=False
args: 'User vote'
website_id
Many2one
readonly=True
related='channel_id.website_id'
action_dislike(self)
action_like(self)
action_set_completed(self)
action_set_viewed(self, quiz_attempts_inc=False)
copy(self, default=None)
create(self, values)
get_access_action(self, access_uid=None)
get_backend_menu_id(self)
message_post(self, *, message_type='notification', **kwargs)
toggle_active(self)
unlink(self)
write(self, values)
link
Char
required=True
args: 'Link'
name
Char
required=True
args: 'Title'
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
args: 'slide.slide'
No public methods.
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
related='slide_id.channel_id'
store=True
string='Channel'
args: 'slide.channel'
completed
Boolean
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
quiz_attempts_count
Integer
default=0
args: 'Quiz attempts count'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
args: 'slide.slide'
vote
Integer
default=0
args: 'Vote'
create(self, vals_list)
write(self, values)
data
Binary
name
Char
required=True
args: 'Name'
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
args: 'slide.slide'
No public methods.
name
Char
required=True
translate=True
args: 'Name'
No public methods.
website_slide_google_app_key
Char
groups='base.group_system'
args: 'Google Doc Key'
get_suggested_controllers(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/14.0/website_slides |
| VERSION | |
| VERSION | 2.2 |
| CATEGORY | |
| CATEGORY | Website/eLearning |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Mohammed Shekha, Nicolas Martinelli, Nicolas Lempereur, Aaron Bohy, Jeremy Kersten, GitHub, Barad Mahendra, Yannick Tivisse, qsm-odoo, Dharmraj Jhala, Romain Derie, Christophe Monniez, Jorge Pinna Puissant, Julien Castiaux, Aurélien Warnon, Xavier-Do, jvm-odoo, jerome hanke (jhk), Victor Feyens, Andrea Grazioso (agr-odoo), Sébastien Theys, Nasreddin (bon), Julien Mougenot, fw-bot, Anh Thao Pham (pta), Debauche Stéphane, Samuel Degueldre, std-odoo, Achraf (abz), David Beguin, Naglis Jonaitis, Philémon van Helden, Jérémy Hennecart, Nasreddin Boulif (bon), Nicolas Galler, Tiffany Chang (tic), Nathan Marotte (nama), IEL, fja-odoo, Mathieu Duckerts-Antoine, Djamel (otd), Hiral Bhavsar, Kevin Baptiste, Benoit Socias, mcm-odoo, Didier (did), Florian Vranckx, Florian Charlier, Patrick Hoste, Jinjiu Liu, Julien Banken, Pierrot (prro), Francois (fge), Andro Gvivradze, Louis Wicket (wil), Saurabh Choraria, Mitul Shah, Mayurrajsinh Rathod, bram1000, Lavish Chhatwani |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/slides |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:14:30 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - portal_rating - portal - web - base - web_editor - http_routing - base_setup - bus - web_tour - auth_signup - rating - website - digest - resource - social_media - website_mail - website_profile - website_partner - gamification - web_kanban_gauge |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | Create Online Courses ===================== Featuring * Integrated course and lesson management * Fullscreen navigation * Support Youtube videos, Google documents, PDF, images, web pages * Test knowledge with quizzes * Filter and Tag * Statistics |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
achievement_card |
Achivement Card | ir.ui.view | qweb | New |
assets_backend |
Slides Backend Assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_editor_inherit_website_slides |
website_slides Assets Editor | ir.ui.view | qweb | Inherits website.assets_editor |
assets_frontend |
Slides Frontend Assets | ir.ui.view | qweb | Inherits website.assets_frontend |
assets_tests |
Slides Tests Assets | ir.ui.view | qweb | Inherits web.assets_tests |
course_card |
Course Card | ir.ui.view | qweb | New |
course_card_information |
Course Information | ir.ui.view | qweb | New |
course_card_information_arrow |
New Content Ribbon | ir.ui.view | qweb | Inherits website_slides.course_card_information |
course_main |
Course Main | ir.ui.view | qweb | New |
course_nav |
Course Navigation Header | ir.ui.view | qweb | New |
course_promoted_slide |
Documentation Course content: promoted slide | ir.ui.view | qweb | New |
course_sidebar |
Course Sidebar (infos, CTA) | ir.ui.view | qweb | New |
course_slides_cards |
Documentation Course content: cards / categories | ir.ui.view | qweb | New |
course_slides_list |
Training Course content: list | ir.ui.view | qweb | New |
course_slides_list_sample |
Course Sample Content | ir.ui.view | qweb | New |
course_slides_list_slide |
Slide template for a training channel | ir.ui.view | qweb | New |
courses_all |
Odoo All Courses | ir.ui.view | qweb | New |
courses_footer |
courses_footer | ir.ui.view | qweb | New |
courses_home |
Odoo Courses Homepage | ir.ui.view | qweb | New |
display_course |
display_course | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
join_course_link |
Join Course Link | ir.ui.view | qweb | New |
lesson_card |
Lesson Card | ir.ui.view | qweb | New |
lesson_content_quiz |
Lesson: Quiz specific content | ir.ui.view | qweb | New |
lesson_content_quiz_add_buttons |
Lesson: Quiz Add Buttons template | ir.ui.view | qweb | New |
lesson_content_quiz_question |
Lesson: Quiz question template | ir.ui.view | qweb | New |
mail_notification_channel_invite |
mail_notification_channel_invite | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | Inherits website_profile.private_profile |
rating_rating_view_graph_slide_channel |
rating.rating.view.graph.slides | rating.rating | graph | New |
rating_rating_view_kanban_slide_channel |
rating.rating.view.kanban.slides | rating.rating | kanban | New |
rating_rating_view_pivot_slide_channel |
rating.rating.view.pivot.slides | rating.rating | pivot | New |
rating_rating_view_search_slide_channel |
rating.rating.view.search.slides | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_config_settings_view_form |
res.config.settings.view.form.inherit.website.slides | res.config.settings | xpath | Inherits website.res_config_settings_view_form |
res_partner_view_form |
res.partner.view.form.inherit.slides | res.partner | xpath | Inherits base.view_partner_form |
slide_aside_card |
Related Slide | ir.ui.view | qweb | New |
slide_aside_documentation |
Slide: Sidebar in Documentation | ir.ui.view | qweb | New |
slide_aside_training |
Slide: Sidebar in Training | ir.ui.view | qweb | New |
slide_aside_training_category |
Category item for the slide detailed view list | ir.ui.view | qweb | New |
slide_channel_invite_view_form |
slide.channel.invite.view.form | slide.channel.invite | form | New |
slide_channel_partner_view_search |
slide.channel.partner.search | slide.channel.partner | search | New |
slide_channel_partner_view_tree |
slide.channel.partner.tree | slide.channel.partner | tree | New |
slide_channel_tag_group_view_form |
slide.channel.tag.group.view.form | slide.channel.tag.group | form | New |
slide_channel_tag_group_view_search |
slide.channel.tag.group.view.search | slide.channel.tag.group | search | New |
slide_channel_tag_group_view_tree |
slide.channel.tag.group.view.tree | slide.channel.tag.group | tree | New |
slide_channel_tag_view_form |
slide.channel.tag.view.form | slide.channel.tag | form | New |
slide_channel_tag_view_search |
slide.channel.tag.view.search | slide.channel.tag | search | New |
slide_channel_tag_view_tree |
slide.channel.tag.view.tree | slide.channel.tag | tree | New |
slide_channel_view_graph |
slide.channel.view.graph | slide.channel | graph | New |
slide_channel_view_kanban |
slide.channel.view.kanban | slide.channel | kanban | New |
slide_channel_view_search |
slide.channel.view.search | slide.channel | search | New |
slide_channel_view_tree |
slide.channel.view.tree | slide.channel | tree | New |
slide_channel_view_tree_report |
slide.channel.view.tree.report | slide.channel | tree | New |
slide_content_detailed |
Slide: Detailed Content | ir.ui.view | qweb | New |
slide_edit_options |
Edit Slide Options | ir.ui.view | qweb | Inherits website.user_navbar |
slide_fullscreen |
Fullscreen | ir.ui.view | qweb | New |
slide_fullscreen_sidebar_category |
Slides category template for fullscreen view side bar | ir.ui.view | qweb | New |
slide_icon |
slide_icon | ir.ui.view | qweb | New |
slide_main |
Slide Detailed View | ir.ui.view | qweb | New |
slide_question_view_form |
slide.question.view.form | slide.question | form | New |
slide_question_view_search |
slide.question.view.search | slide.question | search | New |
slide_question_view_tree |
slide.question.view.tree | slide.question | tree | New |
slide_question_view_tree_report |
slide.question.view.tree.report | slide.question | tree | New |
slide_share_link |
slide_share_link | ir.ui.view | qweb | New |
slide_share_modal |
slide_share_modal | ir.ui.view | qweb | New |
slide_share_modal_body |
slide_share_modal_body | ir.ui.view | qweb | New |
slide_share_modal_header |
slide_share_modal_header | ir.ui.view | qweb | New |
slide_share_social |
Slides Media Share | ir.ui.view | qweb | New |
slide_slide_view_graph |
slide.slide.view.graph | slide.slide | graph | New |
slide_slide_view_kanban |
slide.slide.view.kanban | slide.slide | kanban | New |
slide_slide_view_pivot |
slide.slide.view.pivot | slide.slide | pivot | New |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slides_home_achievements_small |
Users | ir.ui.view | qweb | New |
slides_home_user_achievements_small |
User Achievements | ir.ui.view | qweb | New |
slides_home_user_profile_small |
User Profile | ir.ui.view | qweb | New |
slides_home_users_small |
Users | ir.ui.view | qweb | New |
slides_misc_user_image |
User Avatar | ir.ui.view | qweb | New |
toggle_latest_achievements |
Display Achievements | ir.ui.view | qweb | Inherits website_slides.slides_home_achievements_small |
toggle_leaderboard |
Display Leaderboard | ir.ui.view | qweb | Inherits website_slides.slides_home_users_small |
user_navbar_inherit_website_slides |
user_navbar_inherit_website_slides | ir.ui.view | qweb | Inherits website.user_navbar |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_quickkarma_card |
User QuickKarma Card | ir.ui.view | qweb | New |
view_slide_channel_form |
slide.channel.view.form | slide.channel | form | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_form_wo_channel_id |
slide.slide.form.wo.channel_id | slide.slide | field | Inherits view_slide_slide_form |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.tree | slide.slide | tree | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.tree | slide.tag | tree | New |
website_slides.slide_embed_assets |
Website slides embed assets | ir.ui.view | qweb | New |
website_slides_tests |
eLearning tests | ir.ui.view | qweb | Inherits web.qunit_suite_tests |
challenge_category
Selection
ondelete={'slides': 'set default'}
selection_add=[('slides', 'Website / Slides')]
No public methods.
No new fields.
Public methods (1)binary_content(self, xmlid=None, model='ir.attachment', id=None, field='datas', unique=False, filename=None, filename_field='name', download=False, mimetype=None, default_mimetype='application/octet-stream', access_token=None)
module_mass_mailing_slides
Boolean
string='Mailing'
module_website_sale_slides
Boolean
string='Sell on eCommerce'
module_website_slides_forum
Boolean
string='Forum'
module_website_slides_survey
Boolean
string='Certifications'
website_slide_google_app_key
Char
readonly=False
related='website_id.website_slide_google_app_key'
No public methods.
No new fields.
Public methods (1)write(self, vals)
slide_channel_company_count
Integer
compute='_compute_slide_channel_company_count'
args: 'Company Course Count'
slide_channel_count
Integer
compute='_compute_slide_channel_count'
args: 'Course Count'
slide_channel_ids
Many2many → slide.channel
copy=False
string='eLearning Courses'
args: 'slide.channel', 'slide_channel_partner', 'partner_id', 'channel_id'
action_view_courses(self)
No new fields.
Public methods (3)create(self, values)
get_gamification_redirection_data(self)
write(self, vals)
comment
Text
help='This comment will be displayed to the user if he selects this answer'
translate=True
args: 'Comment'
is_correct
Boolean
question_id
Many2one → slide.question
ondelete='cascade'
required=True
string='Question'
args: 'slide.question'
sequence
Integer
text_value
Char
required=True
translate=True
args: 'Answer'
No public methods.
access_token
Char
copy=False
default=_default_access_token
args: 'Security Token'
active
Boolean
default=True
tracking=100
allow_comment
Boolean
default=True
help='If checked it allows members to either:\n * like content and post comments on documentation course;\n * post comment and review on training course;'
args: 'Allow rating on Course'
can_comment
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Comment'
can_review
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Review'
can_upload
Boolean
compute='_compute_can_upload'
compute_sudo=False
args: 'Can Upload'
can_vote
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Vote'
channel_partner_ids
One2many → slide.channel.partner
depends=['partner_ids']
groups='website_slides.group_website_slides_officer'
string='Members Information'
args: 'slide.channel.partner', 'channel_id'
channel_type
Selection
default='training'
required=True
string='Course type'
args: [('training', 'Training'), ('documentation', 'Documentation')]
color
Integer
default=0
help='Used to decorate kanban view'
args: 'Color Index'
completed
Boolean
compute='_compute_user_statistics'
compute_sudo=False
args: 'Done'
completion
Integer
compute='_compute_user_statistics'
compute_sudo=False
args: 'Completion'
description
Text
help='The description that is displayed on top of the course page, just below the title'
translate=True
args: 'Description'
description_html
Html
sanitize_attributes=False
sanitize_form=False
translate=tools.html_translate
args: 'Detailed Description'
description_short
Text
help='The description that is displayed on the course card'
translate=True
args: 'Short Description'
enroll
Selection
default='public'
help='Condition to enroll: everyone, on invite, on payment (sale bridge).'
required=True
string='Enroll Policy'
args: [('public', 'Public'), ('invite', 'On Invitation')]
enroll_group_ids
Many2many → res.groups
help='Members of those groups are automatically added as members of the channel.'
string='Auto Enroll Groups'
args: 'res.groups'
enroll_msg
Html
default=_get_default_enroll_msg
help='Message explaining the enroll process'
sanitize_attributes=False
translate=tools.html_translate
args: 'Enroll Message'
has_requested_access
Boolean
compute='_compute_has_requested_access'
compute_sudo=False
string='Access Requested'
is_member
Boolean
compute='_compute_is_member'
compute_sudo=False
string='Is Member'
karma_gen_channel_finish
Integer
default=10
string='Course finished'
karma_gen_channel_rank
Integer
default=5
string='Course ranked'
karma_gen_slide_vote
Integer
default=1
string='Lesson voted'
karma_review
Integer
default=10
help='Karma needed to add a review on the course'
args: 'Add Review'
karma_slide_comment
Integer
default=3
help='Karma needed to add a comment on a slide of this course'
args: 'Add Comment'
karma_slide_vote
Integer
default=3
help='Karma needed to like/dislike a slide of this course.'
args: 'Vote'
members_count
Integer
compute='_compute_members_count'
args: 'Attendees count'
members_done_count
Integer
compute='_compute_members_done_count'
args: 'Attendees Done Count'
name
Char
required=True
translate=True
args: 'Name'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Infographics'
nbr_presentation
Integer
compute='_compute_slides_statistics'
store=True
args: 'Presentations'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Videos'
nbr_webpage
Integer
compute='_compute_slides_statistics'
store=True
args: 'Webpages'
partner_has_new_content
Boolean
compute='_compute_partner_has_new_content'
compute_sudo=False
partner_ids
Many2many → res.partner
context={'active_test': False}
copy=False
depends=['channel_partner_ids']
help='All members of the channel.'
string='Members'
args: 'res.partner', 'slide_channel_partner', 'channel_id', 'partner_id'
promote_strategy
Selection
default='latest'
help="Depending the promote strategy, a slide will appear on the top of the course's page :\n * Latest Published : the slide created last.\n * Most Voted : the slide which has to most votes.\n * Most Viewed ; the slide which has been viewed the most.\n * Specific : You choose the slide to appear.\n * None : No slides will be shown.\n"
required=False
string='Promoted Content'
args: [('latest', 'Latest Published'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed'), ('specific', 'Specific'), ('none', 'None')]
promoted_slide_id
Many2one → slide.slide
string='Promoted Slide'
args: 'slide.slide'
publish_template_id
Many2one → mail.template
default=<expr>
help='Email template to send slide publication through email'
string='New Content Email'
args: 'mail.template'
rating_avg_stars
Float
compute='_compute_rating_stats'
compute_sudo=True
digits=(16, 1)
args: 'Rating Average (Stars)'
sequence
Integer
default=10
help='Display order'
share_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Share Template'
args: 'mail.template'
slide_category_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Categories'
args: 'slide.slide'
slide_content_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Slides'
args: 'slide.slide'
slide_ids
One2many → slide.slide
string='Slides and categories'
args: 'slide.slide', 'channel_id'
slide_last_update
Date
compute='_compute_slide_last_update'
store=True
args: 'Last Update'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Slide User Data'
args: 'slide.slide.partner', 'channel_id'
tag_ids
Many2many → slide.channel.tag
help='Used to categorize and filter displayed channels/courses'
string='Tags'
args: 'slide.channel.tag', 'slide_channel_tag_rel', 'channel_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
args: 'Content'
total_time
Float
compute='_compute_slides_statistics'
digits=(10, 2)
store=True
args: 'Duration'
total_views
Integer
compute='_compute_slides_statistics'
store=True
args: 'Visits'
total_votes
Integer
compute='_compute_slides_statistics'
store=True
args: 'Votes'
upload_group_ids
Many2many → res.groups
help='Group of users allowed to publish contents on a documentation course.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
user_id
Many2one → res.users
default=<expr>
string='Responsible'
args: 'res.users'
visibility
Selection
default='public'
help='Applied directly as ACLs. Allow to hide channels and their content for non members.'
required=True
string='Visibility'
args: [('public', 'Public'), ('members', 'Members Only')]
action_add_member(self, **member_values)
action_channel_invite(self)
action_grant_access(self, partner_id)
action_redirect_to_done_members(self)
action_redirect_to_members(self, state=None)
action_redirect_to_running_members(self)
action_refuse_access(self, partner_id)
action_request_access(self)
action_view_ratings(self)
action_view_slides(self)
create(self, vals)
get_backend_menu_id(self)
message_post(self, *, parent_id=False, subtype_id=False, **kwargs)
toggle_active(self)
write(self, vals)
attachment_ids
Many2many → ir.attachment
string='Attachments'
args: 'ir.attachment'
body
Html
compute='_compute_body'
readonly=False
sanitize_style=True
store=True
args: 'Contents'
channel_id
Many2one → slide.channel
required=True
string='Slide channel'
args: 'slide.channel'
partner_ids
Many2many → res.partner
string='Recipients'
args: 'res.partner'
subject
Char
compute='_compute_subject'
readonly=False
store=True
args: 'Subject'
template_id
Many2one → mail.template
domain="[('model', '=', 'slide.channel.partner')]"
args: 'mail.template', 'Use template'
action_invite(self)
create(self, values)
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
required=True
args: 'slide.channel'
completed
Boolean
help='Channel validated, even if slides / lessons are added once done.'
args: 'Is Completed'
completed_slides_count
Integer
completion
Integer
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
unlink(self)
channel_ids
Many2many → slide.channel
string='Channels'
args: 'slide.channel', 'slide_channel_tag_rel', 'tag_id', 'channel_id'
color
Integer
help='Color to apply to this tag (including in website).'
string='Color Index'
group_id
Many2one → slide.channel.tag.group
index=True
required=True
string='Group'
args: 'slide.channel.tag.group'
group_sequence
Integer
index=True
readonly=True
related='group_id.sequence'
store=True
args: 'Group sequence'
name
Char
required=True
translate=True
args: 'Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
No public methods.
name
Char
required=True
translate=True
args: 'Group Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
tag_ids
One2many → slide.channel.tag
string='Tags'
args: 'slide.channel.tag', 'group_id'
No public methods.
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
required=True
string='Presentation'
args: 'slide.slide'
url
Char
required=True
args: 'Third Party Website URL'
No public methods.
answer_ids
One2many → slide.answer
string='Answer'
args: 'slide.answer', 'question_id'
attempts_avg
Float
compute='_compute_statistics'
digits=(6, 2)
groups='website_slides.group_website_slides_officer'
attempts_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
done_count
Integer
compute='_compute_statistics'
groups='website_slides.group_website_slides_officer'
question
Char
required=True
translate=True
args: 'Question Name'
sequence
Integer
slide_id
Many2one → slide.slide
required=True
string='Content'
args: 'slide.slide'
No public methods.
active
Boolean
default=True
tracking=100
category_id
Many2one → slide.slide
compute='_compute_category_id'
store=True
string='Section'
args: 'slide.slide'
channel_allow_comment
Boolean
related='channel_id.allow_comment'
string='Allows comment'
channel_id
Many2one → slide.channel
required=True
string='Course'
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
string='Channel type'
comments_count
Integer
compute='_compute_comments_count'
args: 'Number of comments'
completion_time
Float
digits=(10, 4)
help='The estimated completion time for this slide'
args: 'Duration'
datas
Binary
attachment=True
args: 'Content'
date_published
Datetime
readonly=True
tracking=1
args: 'Publish Date'
description
Text
translate=True
args: 'Description'
dislikes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Dislikes'
document_id
Char
help='Youtube or Google Document ID'
args: 'Document ID'
embed_code
Text
compute='_compute_embed_code'
readonly=True
args: 'Embed Code'
embedcount_ids
One2many → slide.embed
string='Embed Count'
args: 'slide.embed', 'slide_id'
html_content
Html
help="Custom HTML content for slides of type 'Web Page'."
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'HTML Content'
is_category
Boolean
default=False
args: 'Is a category'
is_new_slide
Boolean
compute='_compute_is_new_slide'
args: 'Is New Slide'
is_preview
Boolean
default=False
help="The course is accessible by anyone : the users don't need to join the channel to access the content of the course."
args: 'Allow Preview'
likes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Likes'
link_ids
One2many → slide.slide.link
string='External URL for this slide'
args: 'slide.slide.link', 'slide_id'
mime_type
Char
name
Char
required=True
translate=True
args: 'Title'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Infographics'
nbr_presentation
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Presentations'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Videos'
nbr_webpage
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Webpages'
partner_ids
Many2many → res.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers'
args: 'res.partner', 'slide_slide_partner', 'slide_id', 'partner_id'
public_views
Integer
copy=False
args: '# of Public Views'
question_ids
One2many → slide.question
string='Questions'
args: 'slide.question', 'slide_id'
questions_count
Integer
compute='_compute_questions_count'
string='Numbers of Questions'
quiz_first_attempt_reward
Integer
default=10
args: 'Reward: first attempt'
quiz_fourth_attempt_reward
Integer
default=2
args: 'Reward: every attempt after the third try'
quiz_second_attempt_reward
Integer
default=7
args: 'Reward: second attempt'
quiz_third_attempt_reward
Integer
default=5
args: 'Reward: third attempt'
sequence
Integer
default=0
args: 'Sequence'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'category_id'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website_slides.group_website_slides_officer'
string='Subscribers information'
args: 'slide.slide.partner', 'slide_id'
slide_resource_downloadable
Boolean
default=True
help='Allow the user to download the content of the slide.'
args: 'Allow Download'
slide_resource_ids
One2many → slide.slide.resource
string='Additional Resource for this slide'
args: 'slide.slide.resource', 'slide_id'
slide_type
Selection
default='document'
help='The document type will be set automatically based on the document URL and properties (e.g. height and width for presentation and document).'
required=True
string='Type'
args: [('infographic', 'Infographic'), ('webpage', 'Web Page'), ('presentation', 'Presentation'), ('document', 'Document'), ('video', 'Video'), ('quiz', 'Quiz')]
slide_views
Integer
compute='_compute_slide_views'
store=True
args: '# of Website Views'
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: 'Views'
url
Char
help='Youtube or Google Document URL'
args: 'Document URL'
user_id
Many2one → res.users
default=<expr>
string='Uploaded by'
args: 'res.users'
user_membership_id
Many2one → slide.slide.partner
compute='_compute_user_membership_id'
compute_sudo=False
help='Subscriber information for the current logged in user'
string='Subscriber information'
args: 'slide.slide.partner'
user_vote
Integer
compute='_compute_user_membership_id'
compute_sudo=False
args: 'User vote'
website_id
Many2one
readonly=True
related='channel_id.website_id'
action_dislike(self)
action_like(self)
action_set_completed(self)
action_set_viewed(self, quiz_attempts_inc=False)
copy(self, default=None)
create(self, values)
get_access_action(self, access_uid=None)
get_backend_menu_id(self)
message_post(self, *, message_type='notification', **kwargs)
toggle_active(self)
unlink(self)
write(self, values)
link
Char
required=True
args: 'Link'
name
Char
required=True
args: 'Title'
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
args: 'slide.slide'
No public methods.
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
related='slide_id.channel_id'
store=True
string='Channel'
args: 'slide.channel'
completed
Boolean
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
quiz_attempts_count
Integer
default=0
args: 'Quiz attempts count'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
args: 'slide.slide'
vote
Integer
default=0
args: 'Vote'
create(self, values)
write(self, values)
data
Binary
name
Char
required=True
args: 'Name'
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
args: 'slide.slide'
No public methods.
name
Char
required=True
translate=True
args: 'Name'
No public methods.
website_slide_google_app_key
Char
groups='base.group_system'
args: 'Google Doc Key'
get_suggested_controllers(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/13.0/website_slides |
| VERSION | |
| VERSION | 2.0 |
| CATEGORY | |
| CATEGORY | Website/Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Richard Mathot, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, qsm-odoo, Odoo Online, Romain Derie, jem-odoo, Jorge Pinna Puissant, Alexandre Kühn, Adrian Torres, Julien Castiaux, Aurélien Warnon, Priyanka Kakadiya, Xavier-Do, jvm-odoo, mgh-odoo, jerome hanke (jhk), Victor Feyens, Andrea Grazioso (agr-odoo), Sébastien Theys, Nasreddin (bon), fw-bot, Achraf (abz), David Beguin, Lucas Lefèvre, Adrien Widart, sri-odoo, Philémon van Helden, Nasreddin Boulif (bon), Nathan Marotte (nama), IEL, fja-odoo, Djamel (otd), Parth Choksi, Yenthe666, jbm-odoo, qmo-odoo, mcm-odoo, laa, ryv-odoo, jpr-odoo, Patrick Hoste, Juhil Somaiya, Julien Banken, Florent Lejoly, Pierrot (prro) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/slides |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:06:44 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - website - web - base - web_editor - http_routing - portal - base_setup - bus - web_tour - auth_signup - social_media - website_mail - website_profile - website_partner - gamification - web_kanban_gauge - website_rating - rating |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | Create Online Courses ===================== Featuring * Integrated course and lesson management * Fullscreen navigation * Support Youtube videos, Google documents, PDF, images, web pages * Test knowledge with quizzes * Filter and Tag * Statistics |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
achievement_card |
Achivement Card | ir.ui.view | qweb | New |
assets_backend |
Slides Backend Assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_editor_inherit_website_slides |
website_slides Assets Editor | ir.ui.view | qweb | Inherits website.assets_editor |
assets_frontend |
Slides Frontend Assets | ir.ui.view | qweb | Inherits website.assets_frontend |
assets_tests |
Slides Tests Assets | ir.ui.view | qweb | Inherits web.assets_tests |
course_card |
Course Card | ir.ui.view | qweb | New |
course_main |
Course Main | ir.ui.view | qweb | New |
course_nav |
Course Navigation Header | ir.ui.view | qweb | New |
course_sidebar |
Course Sidebar (infos, CTA) | ir.ui.view | qweb | New |
course_slides_cards |
Documentation Course content: cards / categories | ir.ui.view | qweb | New |
course_slides_list |
Training Course content: list | ir.ui.view | qweb | New |
course_slides_list_slide |
Slide template for a training channel | ir.ui.view | qweb | New |
courses_all |
Odoo All Courses | ir.ui.view | qweb | New |
courses_footer |
courses_footer | ir.ui.view | qweb | New |
courses_home |
Odoo Courses Homepage | ir.ui.view | qweb | New |
display_course |
display_course | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
lesson_card |
Lesson Card | ir.ui.view | qweb | New |
lesson_content_quiz |
Lesson: Quiz specific content | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | Inherits website_profile.private_profile |
rating_rating_view_graph_slide_channel |
rating.rating.view.graph.slides | rating.rating | graph | New |
rating_rating_view_kanban_slide_channel |
rating.rating.view.kanban.slides | rating.rating | kanban | New |
rating_rating_view_pivot_slide_channel |
rating.rating.view.pivot.slides | rating.rating | pivot | New |
rating_rating_view_search_slide_channel |
rating.rating.view.search.slides | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_config_settings_view_form |
res.config.settings.view.form.inherit.website.slides | res.config.settings | xpath | Inherits website.res_config_settings_view_form |
res_partner_view_form |
res.partner.view.form.inherit.slides | res.partner | xpath | Inherits base.view_partner_form |
slide_aside_card |
Related Slide | ir.ui.view | qweb | New |
slide_aside_documentation |
Slide: Sidebar in Documentation | ir.ui.view | qweb | New |
slide_aside_training |
Slide: Sidebar in Training | ir.ui.view | qweb | New |
slide_aside_training_category |
Category item for the slide detailed view list | ir.ui.view | qweb | New |
slide_channel_invite_view_form |
slide.channel.invite.view.form | slide.channel.invite | form | New |
slide_channel_partner_view_search |
slide.channel.partner.search | slide.channel.partner | search | New |
slide_channel_partner_view_tree |
slide.channel.partner.tree | slide.channel.partner | tree | New |
slide_channel_tag_group_view_form |
slide.channel.tag.group.view.form | slide.channel.tag.group | form | New |
slide_channel_tag_group_view_search |
slide.channel.tag.group.view.search | slide.channel.tag.group | search | New |
slide_channel_tag_group_view_tree |
slide.channel.tag.group.view.tree | slide.channel.tag.group | tree | New |
slide_channel_tag_view_form |
slide.channel.tag.view.form | slide.channel.tag | form | New |
slide_channel_tag_view_search |
slide.channel.tag.view.search | slide.channel.tag | search | New |
slide_channel_tag_view_tree |
slide.channel.tag.view.tree | slide.channel.tag | tree | New |
slide_channel_view_graph |
slide.channel.view.graph | slide.channel | graph | New |
slide_channel_view_kanban |
slide.channel.view.kanban | slide.channel | kanban | New |
slide_channel_view_search |
slide.channel.view.search | slide.channel | search | New |
slide_channel_view_tree |
slide.channel.view.tree | slide.channel | tree | New |
slide_channel_view_tree_report |
slide.channel.view.tree.report | slide.channel | tree | New |
slide_content_detailed |
Slide: Detailed Content | ir.ui.view | qweb | New |
slide_edit_options |
Edit Slide Options | ir.ui.view | qweb | Inherits website.user_navbar |
slide_fullscreen |
Fullscreen | ir.ui.view | qweb | New |
slide_fullscreen_sidebar_category |
Slides category template for fullscreen view side bar | ir.ui.view | qweb | New |
slide_icon |
slide_icon | ir.ui.view | qweb | New |
slide_main |
Slide Detailed View | ir.ui.view | qweb | New |
slide_question_view_form |
slide.question.view.form | slide.question | form | New |
slide_question_view_search |
slide.question.view.search | slide.question | search | New |
slide_question_view_tree |
slide.question.view.tree | slide.question | tree | New |
slide_question_view_tree_report |
slide.question.view.tree.report | slide.question | tree | New |
slide_slide_view_graph |
slide.slide.view.graph | slide.slide | graph | New |
slide_slide_view_kanban |
slide.slide.view.kanban | slide.slide | kanban | New |
slide_slide_view_pivot |
slide.slide.view.pivot | slide.slide | pivot | New |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slide_social_media |
Share on Social Networks | ir.ui.view | qweb | New |
slides_home_achievements_small |
Users | ir.ui.view | qweb | New |
slides_home_user_achievements_small |
User Achievements | ir.ui.view | qweb | New |
slides_home_user_profile_small |
User Profile | ir.ui.view | qweb | New |
slides_home_users_small |
Users | ir.ui.view | qweb | New |
slides_misc_user_image |
User Avatar | ir.ui.view | qweb | New |
slides_share |
Slides Media Share | ir.ui.view | qweb | New |
toggle_latest_achievements |
Display Achievements | ir.ui.view | qweb | Inherits website_slides.slides_home_achievements_small |
toggle_leaderboard |
Display Leaderboard | ir.ui.view | qweb | Inherits website_slides.slides_home_users_small |
user_navbar_inherit_website_slides |
user_navbar_inherit_website_slides | ir.ui.view | qweb | Inherits website.user_navbar |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_quickkarma_card |
User QuickKarma Card | ir.ui.view | qweb | New |
view_slide_channel_form |
slide.channel.view.form | slide.channel | form | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_form_wo_channel_id |
slide.slide.form.wo.channel_id | slide.slide | field | Inherits view_slide_slide_form |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.tree | slide.slide | tree | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.tree | slide.tag | tree | New |
website_slides.slide_embed_assets |
Website slides embed assets | ir.ui.view | qweb | New |
category
Selection
selection_add=[('slides', 'Website / Slides')]
No public methods.
No new fields.
Public methods (1)binary_content(self, xmlid=None, model='ir.attachment', id=None, field='datas', unique=False, filename=None, filename_field='name', download=False, mimetype=None, default_mimetype='application/octet-stream', access_token=None)
module_mass_mailing_slides
Boolean
string='Mailing'
module_website_sale_slides
Boolean
string='Sell on eCommerce'
module_website_slides_forum
Boolean
string='Forum'
module_website_slides_survey
Boolean
string='Certifications'
website_slide_google_app_key
Char
readonly=False
related='website_id.website_slide_google_app_key'
No public methods.
No new fields.
Public methods (1)write(self, vals)
slide_channel_company_count
Integer
compute='_compute_slide_channel_company_count'
args: 'Company Course Count'
slide_channel_count
Integer
compute='_compute_slide_channel_count'
args: 'Course Count'
slide_channel_ids
Many2many → slide.channel
string='eLearning Courses'
args: 'slide.channel', 'slide_channel_partner', 'partner_id', 'channel_id'
action_view_courses(self)
No new fields.
Public methods (3)create(self, values)
get_gamification_redirection_data(self)
write(self, vals)
is_correct
Boolean
question_id
Many2one → slide.question
ondelete='cascade'
required=True
string='Question'
args: 'slide.question'
text_value
Char
required=True
translate=True
args: 'Answer'
No public methods.
access_token
Char
copy=False
default=_default_access_token
args: 'Security Token'
active
Boolean
default=True
allow_comment
Boolean
default=False
help='If checked it allows members to either:\n * like content and post comments on documentation course;\n * post comment and review on training course;'
args: 'Allow rating on Course'
can_comment
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Comment'
can_review
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Review'
can_upload
Boolean
compute='_compute_can_upload'
compute_sudo=False
args: 'Can Upload'
can_vote
Boolean
compute='_compute_action_rights'
compute_sudo=False
args: 'Can Vote'
channel_partner_ids
One2many → slide.channel.partner
depends=['partner_ids']
groups='website.group_website_publisher'
string='Members Information'
args: 'slide.channel.partner', 'channel_id'
channel_type
Selection
default='documentation'
required=True
string='Course type'
args: [('documentation', 'Documentation'), ('training', 'Training')]
color
Integer
default=0
help='Used to decorate kanban view'
args: 'Color Index'
completed
Boolean
compute='_compute_user_statistics'
compute_sudo=False
args: 'Done'
completion
Integer
compute='_compute_user_statistics'
compute_sudo=False
args: 'Completion'
description
Text
translate=True
args: 'Short Description'
description_html
Html
sanitize_attributes=False
translate=tools.html_translate
args: 'Description'
enroll
Selection
default='public'
help='Condition to enroll: everyone, on invite, on payment (sale bridge).'
required=True
string='Enroll Policy'
args: [('public', 'Public'), ('invite', 'On Invitation')]
enroll_group_ids
Many2many → res.groups
help='Members of those groups are automatically added as members of the channel.'
string='Auto Enroll Groups'
args: 'res.groups'
enroll_msg
Html
default=False
help='Message explaining the enroll process'
sanitize_attributes=False
translate=tools.html_translate
args: 'Enroll Message'
is_member
Boolean
compute='_compute_is_member'
string='Is Member'
karma_gen_channel_finish
Integer
default=10
string='Course finished'
karma_gen_channel_rank
Integer
default=5
string='Course ranked'
karma_gen_slide_vote
Integer
default=1
string='Lesson voted'
karma_review
Integer
default=10
help='Karma needed to add a review on the course'
args: 'Add Review'
karma_slide_comment
Integer
default=3
help='Karma needed to add a comment on a slide of this course'
args: 'Add Comment'
karma_slide_vote
Integer
default=3
help='Karma needed to like/dislike a slide of this course.'
args: 'Vote'
members_count
Integer
compute='_compute_members_count'
args: 'Attendees count'
members_done_count
Integer
compute='_compute_members_done_count'
args: 'Attendees Done Count'
name
Char
required=True
translate=True
args: 'Name'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Infographics'
nbr_presentation
Integer
compute='_compute_slides_statistics'
store=True
args: 'Presentations'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Videos'
nbr_webpage
Integer
compute='_compute_slides_statistics'
store=True
args: 'Webpages'
partner_ids
Many2many → res.partner
context={'active_test': False}
copy=False
depends=['channel_partner_ids']
help='All members of the channel.'
string='Members'
args: 'res.partner', 'slide_channel_partner', 'channel_id', 'partner_id'
promote_strategy
Selection
default='latest'
required=True
string='Featured Content'
args: [('latest', 'Latest Published'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed')]
publish_template_id
Many2one → mail.template
default=<expr>
help='Email template to send slide publication through email'
string='New Content Email'
args: 'mail.template'
rating_avg_stars
Float
compute='_compute_rating_stats'
digits=(16, 1)
args: 'Rating Average (Stars)'
sequence
Integer
default=10
help='Display order'
share_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Share Template'
args: 'mail.template'
slide_category_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Categories'
args: 'slide.slide'
slide_content_ids
One2many → slide.slide
compute='_compute_category_and_slide_ids'
string='Slides'
args: 'slide.slide'
slide_ids
One2many → slide.slide
string='Slides and categories'
args: 'slide.slide', 'channel_id'
slide_last_update
Date
compute='_compute_slide_last_update'
store=True
args: 'Last Update'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website.group_website_publisher'
string='Slide User Data'
args: 'slide.slide.partner', 'channel_id'
tag_ids
Many2many → slide.channel.tag
help='Used to categorize and filter displayed channels/courses'
string='Tags'
args: 'slide.channel.tag', 'slide_channel_tag_rel', 'channel_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
args: 'Content'
total_time
Float
compute='_compute_slides_statistics'
digits=(10, 2)
store=True
args: 'Duration'
total_views
Integer
compute='_compute_slides_statistics'
store=True
args: 'Visits'
total_votes
Integer
compute='_compute_slides_statistics'
store=True
args: 'Votes'
upload_group_ids
Many2many → res.groups
help='Group of users allowed to publish contents on a documentation course.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
user_id
Many2one → res.users
default=<expr>
string='Responsible'
args: 'res.users'
visibility
Selection
default='public'
help='Applied directly as ACLs. Allow to hide channels and their content for non members.'
required=True
string='Visibility'
args: [('public', 'Public'), ('members', 'Members Only')]
action_add_member(self, **member_values)
action_channel_invite(self)
action_redirect_to_done_members(self)
action_redirect_to_members(self, state=None)
action_redirect_to_running_members(self)
action_view_ratings(self)
action_view_slides(self)
create(self, vals)
get_backend_menu_id(self)
message_post(self, *, parent_id=False, subtype=None, **kwargs)
write(self, vals)
attachment_ids
Many2many → ir.attachment
string='Attachments'
args: 'ir.attachment'
author_id
Many2one → res.partner
default=_default_author_id
ondelete='set null'
args: 'res.partner', 'Author'
body
Html
default=''
sanitize_style=True
args: 'Contents'
channel_id
Many2one → slide.channel
required=True
string='Slide channel'
args: 'slide.channel'
channel_url
Char
readonly=True
related='channel_id.website_url'
email_from
Char
default=_default_email_from
args: 'From'
partner_ids
Many2many → res.partner
string='Recipients'
args: 'res.partner'
subject
Char
template_id
Many2one → mail.template
domain="[('model', '=', 'slide.channel.partner')]"
args: 'mail.template', 'Use template'
action_invite(self)
create(self, values)
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
required=True
args: 'slide.channel'
completed
Boolean
help='Channel validated, even if slides / lessons are added once done.'
args: 'Is Completed'
completion
Integer
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
unlink(self)
channel_ids
Many2many → slide.channel
string='Channels'
args: 'slide.channel', 'slide_channel_tag_rel', 'tag_id', 'channel_id'
group_id
Many2one → slide.channel.tag.group
index=True
required=True
string='Group'
args: 'slide.channel.tag.group'
group_sequence
Integer
index=True
readonly=True
related='group_id.sequence'
store=True
args: 'Group sequence'
name
Char
required=True
translate=True
args: 'Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
No public methods.
name
Char
required=True
translate=True
args: 'Name'
sequence
Integer
default=10
index=True
required=True
args: 'Sequence'
tag_ids
One2many → slide.channel.tag
string='Tags'
args: 'slide.channel.tag', 'group_id'
No public methods.
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
required=True
string='Presentation'
args: 'slide.slide'
url
Char
required=True
args: 'Third Party Website URL'
No public methods.
answer_ids
One2many → slide.answer
string='Answer'
args: 'slide.answer', 'question_id'
attempts_avg
Float
compute='_compute_statistics'
digits=(6, 2)
groups='website.group_website_publisher'
attempts_count
Integer
compute='_compute_statistics'
groups='website.group_website_publisher'
done_count
Integer
compute='_compute_statistics'
groups='website.group_website_publisher'
question
Char
required=True
translate=True
args: 'Question Name'
sequence
Integer
default=10
args: 'Sequence'
slide_id
Many2one → slide.slide
required=True
string='Content'
args: 'slide.slide'
No public methods.
active
Boolean
default=True
category_id
Many2one → slide.slide
compute='_compute_category_id'
store=True
string='Section'
args: 'slide.slide'
channel_allow_comment
Boolean
related='channel_id.allow_comment'
string='Allows comment'
channel_id
Many2one → slide.channel
required=True
string='Course'
args: 'slide.channel'
channel_type
Selection
related='channel_id.channel_type'
string='Channel type'
comments_count
Integer
compute='_compute_comments_count'
args: 'Number of comments'
completion_time
Float
digits=(10, 4)
help='The estimated completion time for this slide'
args: 'Duration'
datas
Binary
attachment=True
args: 'Content'
date_published
Datetime
readonly=True
tracking=True
args: 'Publish Date'
description
Text
translate=True
args: 'Description'
dislikes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Dislikes'
document_id
Char
help='Youtube or Google Document ID'
args: 'Document ID'
embed_code
Text
compute='_compute_embed_code'
readonly=True
args: 'Embed Code'
embedcount_ids
One2many → slide.embed
string='Embed Count'
args: 'slide.embed', 'slide_id'
html_content
Html
help="Custom HTML content for slides of type 'Web Page'."
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'HTML Content'
is_category
Boolean
default=False
args: 'Is a category'
is_preview
Boolean
default=False
help="The course is accessible by anyone : the users don't need to join the channel to access the content of the course."
args: 'Allow Preview'
likes
Integer
compute='_compute_like_info'
compute_sudo=False
store=True
args: 'Likes'
link_ids
One2many → slide.slide.link
string='External URL for this slide'
args: 'slide.slide.link', 'slide_id'
mime_type
Char
name
Char
required=True
translate=True
args: 'Title'
nbr_document
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Documents'
nbr_infographic
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Infographics'
nbr_presentation
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Presentations'
nbr_quiz
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Quizs'
nbr_video
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Videos'
nbr_webpage
Integer
compute='_compute_slides_statistics'
store=True
args: 'Number of Webpages'
partner_ids
Many2many → res.partner
copy=False
groups='website.group_website_publisher'
string='Subscribers'
args: 'res.partner', 'slide_slide_partner', 'slide_id', 'partner_id'
public_views
Integer
copy=False
args: '# of Public Views'
question_ids
One2many → slide.question
string='Questions'
args: 'slide.question', 'slide_id'
questions_count
Integer
compute='_compute_questions_count'
string='Numbers of Questions'
quiz_first_attempt_reward
Integer
default=10
args: 'First attempt reward'
quiz_fourth_attempt_reward
Integer
default=2
args: 'Reward for every attempt after the third try'
quiz_second_attempt_reward
Integer
default=7
args: 'Second attempt reward'
quiz_third_attempt_reward
Integer
default=5
args: 'Third attempt reward'
sequence
Integer
default=0
args: 'Sequence'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'category_id'
slide_partner_ids
One2many → slide.slide.partner
copy=False
groups='website.group_website_publisher'
string='Subscribers information'
args: 'slide.slide.partner', 'slide_id'
slide_type
Selection
default='document'
help='The document type will be set automatically based on the document URL and properties (e.g. height and width for presentation and document).'
required=True
string='Type'
args: [('infographic', 'Infographic'), ('webpage', 'Web Page'), ('presentation', 'Presentation'), ('document', 'Document'), ('video', 'Video'), ('quiz', 'Quiz')]
slide_views
Integer
compute='_compute_slide_views'
store=True
args: '# of Website Views'
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_slides
Integer
compute='_compute_slides_statistics'
store=True
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: 'Views'
url
Char
help='Youtube or Google Document URL'
args: 'Document URL'
user_id
Many2one → res.users
default=<expr>
string='Uploaded by'
args: 'res.users'
user_membership_id
Many2one → slide.slide.partner
compute='_compute_user_membership_id'
compute_sudo=False
help='Subscriber information for the current logged in user'
string='Subscriber information'
args: 'slide.slide.partner'
user_vote
Integer
compute='_compute_user_membership_id'
compute_sudo=False
args: 'User vote'
website_id
Many2one
readonly=True
related='channel_id.website_id'
action_dislike(self)
action_like(self)
action_set_completed(self)
action_set_viewed(self, quiz_attempts_inc=False)
copy(self, default=None)
create(self, values)
get_access_action(self, access_uid=None)
get_backend_menu_id(self)
message_post(self, *, message_type='notification', **kwargs)
unlink(self)
write(self, values)
link
Char
required=True
args: 'Link'
name
Char
required=True
args: 'Title'
slide_id
Many2one → slide.slide
ondelete='cascade'
required=True
args: 'slide.slide'
No public methods.
channel_id
Many2one → slide.channel
index=True
ondelete='cascade'
related='slide_id.channel_id'
store=True
string='Channel'
args: 'slide.channel'
completed
Boolean
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
args: 'res.partner'
quiz_attempts_count
Integer
default=0
args: 'Quiz attempts count'
slide_id
Many2one → slide.slide
index=True
ondelete='cascade'
required=True
args: 'slide.slide'
vote
Integer
default=0
args: 'Vote'
create(self, values)
write(self, values)
name
Char
required=True
translate=True
args: 'Name'
No public methods.
website_slide_google_app_key
Char
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/12.0/website_slides |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Christophe Simonis, Jeremy Kersten, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Romain Derie, Jairo Llopis, Alexandre Kühn, Adrian Torres, Julien Castiaux, Aurélien Warnon, Xavier-Do, jvm-odoo, Sébastien Theys, fw-bot, Quentin Smetz (qsm) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/slides |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:57:02 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - website - web - base - web_editor - http_routing - portal - base_setup - bus - web_tour - social_media - website_mail |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | Share and Publish Videos, Presentations and Documents' ====================================================== * Website Application * Channel Management * Filters and Tagging * Statistics of Presentation * Channel Subscription * Supported document types : PDF, images, YouTube videos and Google Drive documents) |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_editor_inherit_website_slides |
website_slides Assets Editor | ir.ui.view | qweb | Inherits website.assets_editor |
assets_frontend |
Slide | ir.ui.view | qweb | Inherits website.assets_frontend |
channel_not_found |
Private Presentation | ir.ui.view | qweb | New |
channels |
Channels | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
home |
Odoo Slides | ir.ui.view | qweb | New |
opt_subscription_on_channels |
Subscription | ir.ui.view | qweb | Inherits website_slides.channels |
related_slides |
Related Slide | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.website.slides | res.config.settings | div | Inherits website.res_config_settings_view_form |
slide_channel_view_search |
slide.channel.search | slide.channel | search | New |
slide_detail_view |
Slide Detailed View | ir.ui.view | qweb | New |
slide_edit_options |
Edit Slide Options | ir.ui.view | qweb | Inherits website.user_navbar |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slide_social_media |
Share on Social Networks | ir.ui.view | qweb | New |
slides_channel_header |
Slides Channel Header | ir.ui.view | qweb | New |
slides_grid_view |
Slides (Grid View) | ir.ui.view | qweb | New |
slides_search |
Searching Slides | ir.ui.view | qweb | New |
slides_share |
Slides Media Share | ir.ui.view | qweb | New |
user_navbar_inherit_website_slides |
user_navbar_inherit_website_slides | ir.ui.view | qweb | Inherits website.user_navbar |
view_slide_channel_form |
slide.channel.form | slide.channel | form | New |
view_slide_channel_tree |
slide.channel.tree | slide.channel | tree | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_graph |
slide.slide.graph | slide.slide | graph | New |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.tree | slide.slide | tree | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.tree | slide.tag | tree | New |
view_slides_category_form |
slide.category.form | slide.category | form | New |
view_slides_category_tree |
slide.category.tree | slide.category | tree | New |
website_slides.slide_embed_assets |
Website slides embed assets | ir.ui.view | qweb | New |
website_slide_google_app_key
Char
readonly=False
related='website_id.website_slide_google_app_key'
No public methods.
channel_id
Many2one → slide.channel
ondelete='cascade'
required=True
string='Channel'
args: 'slide.channel'
name
Char
required=True
translate=True
args: 'Name'
nbr_documents
Integer
compute='_count_presentations'
store=True
args: 'Number of Documents'
nbr_infographics
Integer
compute='_count_presentations'
store=True
args: 'Number of Infographics'
nbr_presentations
Integer
compute='_count_presentations'
store=True
args: 'Number of Presentations'
nbr_videos
Integer
compute='_count_presentations'
store=True
args: 'Number of Videos'
sequence
Integer
default=10
help='Display order'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'category_id'
total
Integer
compute='_count_presentations'
store=True
No public methods.
access_error_msg
Html
default=<expr>
help='Message to display when not accessible due to access rights'
sanitize_attributes=False
translate=html_translate
args: 'Error Message'
active
Boolean
default=True
can_see
Boolean
compute='_compute_access'
search='_search_can_see'
args: 'Can See'
can_see_full
Boolean
compute='_compute_access'
args: 'Full Access'
can_upload
Boolean
compute='_compute_access'
args: 'Can Upload'
category_ids
One2many → slide.category
string='Categories'
args: 'slide.category', 'channel_id'
custom_slide_id
Many2one → slide.slide
string='Slide to Promote'
args: 'slide.slide'
description
Html
sanitize_attributes=False
translate=html_translate
args: 'Description'
group_ids
Many2many → res.groups
help='Groups allowed to see presentations in this channel'
string='Channel Groups'
args: 'res.groups', 'rel_channel_groups', 'channel_id', 'group_id'
name
Char
required=True
translate=True
args: 'Name'
nbr_documents
Integer
compute='_count_presentations'
store=True
args: 'Number of Documents'
nbr_infographics
Integer
compute='_count_presentations'
store=True
args: 'Number of Infographics'
nbr_presentations
Integer
compute='_count_presentations'
store=True
args: 'Number of Presentations'
nbr_videos
Integer
compute='_count_presentations'
store=True
args: 'Number of Videos'
promote_strategy
Selection
default='most_voted'
required=True
string='Featuring Policy'
args: [('none', 'No Featured Presentation'), ('latest', 'Latest Published'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed'), ('custom', 'Featured Presentation')]
promoted_slide_id
Many2one → slide.slide
compute='_compute_promoted_slide_id'
store=True
string='Featured Slide'
args: 'slide.slide'
publish_template_id
Many2one → mail.template
default=<expr>
help='Email template to send slide publication through email'
string='Published Template'
args: 'mail.template'
sequence
Integer
default=10
help='Display order'
share_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Shared Template'
args: 'mail.template'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'channel_id'
total
Integer
compute='_count_presentations'
store=True
upload_group_ids
Many2many → res.groups
help='Groups allowed to upload presentations in this channel. If void, every user can upload.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
visibility
Selection
default='public'
required=True
args: [('public', 'Public'), ('private', 'Private'), ('partial', 'Show channel but restrict presentations')]
change_visibility(self)
get_base_url(self)
list_all(self)
message_post(self, parent_id=False, subtype=None, **kwargs)
write(self, vals)
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
required=True
string='Presentation'
args: 'slide.slide'
url
Char
required=True
args: 'Third Party Website URL'
add_embed_url(self, slide_id, url)
active
Boolean
default=True
category_id
Many2one → slide.category
domain="[('channel_id', '=', channel_id)]"
string='Category'
args: 'slide.category'
channel_id
Many2one → slide.channel
required=True
string='Channel'
args: 'slide.channel'
datas
Binary
attachment=True
args: 'Content'
date_published
Datetime
description
Text
translate=True
args: 'Description'
dislikes
Integer
document_id
Char
help='Youtube or Google Document ID'
args: 'Document ID'
download_security
Selection
default='user'
required=True
string='Download Security'
args: [('none', 'No One'), ('user', 'Authenticated Users Only'), ('public', 'Everyone')]
embed_code
Text
compute='_get_embed_code'
readonly=True
args: 'Embed Code'
embed_views
Integer
embedcount_ids
One2many → slide.embed
string='Embed Count'
args: 'slide.embed', 'slide_id'
image
Binary
attachment=True
args: 'Image'
image_medium
Binary
attachment=True
compute='_get_image'
store=True
args: 'Medium'
image_thumb
Binary
attachment=True
compute='_get_image'
store=True
args: 'Thumbnail'
index_content
Text
likes
Integer
mime_type
Char
name
Char
required=True
translate=True
args: 'Title'
slide_type
Selection
default='document'
help='The document type will be set automatically based on the document URL and properties (e.g. height and width for presentation and document).'
required=True
string='Type'
args: [('infographic', 'Infographic'), ('presentation', 'Presentation'), ('document', 'Document'), ('video', 'Video')]
slide_views
Integer
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: 'Total # Views'
url
Char
help='Youtube or Google Document URL'
args: 'Document URL'
website_id
Many2one
readonly=True
related='channel_id.website_id'
check_field_access_rights(self, operation, fields)
create(self, values)
get_access_action(self, access_uid=None)
get_most_viewed_slides(self, limit=20)
get_related_slides(self, limit=20)
on_change_url(self)
send_share_email(self, email)
write(self, values)
name
Char
required=True
translate=True
args: 'Name'
No public methods.
website_slide_google_app_key
Char
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/11.0/website_slides |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Nicolas Lempereur, Jérome Maes, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Odoo Online |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:53:44 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - website - web - base - web_editor - web_planner - http_routing - portal - base_setup - bus - web_tour - website_mail |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | Share and Publish Videos, Presentations and Documents' ====================================================== * Website Application * Channel Management * Filters and Tagging * Statistics of Presentation * Channel Subscription * Supported document types : PDF, images, YouTube videos and Google Drive documents) |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_frontend |
Slide | ir.ui.view | qweb | Inherits website.assets_frontend |
channel_not_found |
Private Presentation | ir.ui.view | qweb | New |
channels |
Channels | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
home |
Odoo Slides | ir.ui.view | qweb | New |
opt_subscription_on_channels |
Subscription | ir.ui.view | qweb | Inherits website_slides.channels |
related_slides |
Related Slide | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.website.slides | res.config.settings | div | Inherits website.res_config_settings_view_form |
slide_channel_view_search |
slide.channel.search | slide.channel | search | New |
slide_detail_view |
Slide Detailed View | ir.ui.view | qweb | New |
slide_edit_options |
Edit Slide Options | ir.ui.view | qweb | Inherits website.user_navbar |
slide_footer |
Footer Slides Link | ir.ui.view | qweb | Inherits website.footer_default |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slide_social_media |
Share on Social Networks | ir.ui.view | qweb | New |
slides_channel_header |
Slides Channel Header | ir.ui.view | qweb | New |
slides_grid_view |
Slides (Grid View) | ir.ui.view | qweb | New |
slides_search |
Searching Slides | ir.ui.view | qweb | New |
slides_share |
Slides Media Share | ir.ui.view | qweb | New |
view_slide_channel_form |
slide.channel.form | slide.channel | form | New |
view_slide_channel_tree |
slide.channel.tree | slide.channel | tree | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_graph |
slide.slide.graph | slide.slide | graph | New |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.tree | slide.slide | tree | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.tree | slide.tag | tree | New |
view_slides_category_form |
slide.category.form | slide.category | form | New |
view_slides_category_tree |
slide.category.tree | slide.category | tree | New |
website_slides.slide_embed_assets |
Website slides embed assets | ir.ui.view | qweb | New |
website_slide_google_app_key
Char
string='Google Doc Key'
get_values(self)
set_values(self)
channel_id
Many2one → slide.channel
ondelete='cascade'
required=True
string='Channel'
args: 'slide.channel'
name
Char
required=True
translate=True
args: 'Name'
nbr_documents
Integer
compute='_count_presentations'
store=True
args: 'Number of Documents'
nbr_infographics
Integer
compute='_count_presentations'
store=True
args: 'Number of Infographics'
nbr_presentations
Integer
compute='_count_presentations'
store=True
args: 'Number of Presentations'
nbr_videos
Integer
compute='_count_presentations'
store=True
args: 'Number of Videos'
sequence
Integer
default=10
help='Display order'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'category_id'
total
Integer
compute='_count_presentations'
store=True
No public methods.
access_error_msg
Html
default=<expr>
help='Message to display when not accessible due to access rights'
sanitize_attributes=False
translate=html_translate
args: 'Error Message'
active
Boolean
default=True
can_see
Boolean
compute='_compute_access'
search='_search_can_see'
args: 'Can See'
can_see_full
Boolean
compute='_compute_access'
args: 'Full Access'
can_upload
Boolean
compute='_compute_access'
args: 'Can Upload'
category_ids
One2many → slide.category
string='Categories'
args: 'slide.category', 'channel_id'
custom_slide_id
Many2one → slide.slide
string='Slide to Promote'
args: 'slide.slide'
description
Html
sanitize_attributes=False
translate=html_translate
args: 'Description'
group_ids
Many2many → res.groups
help='Groups allowed to see presentations in this channel'
string='Channel Groups'
args: 'res.groups', 'rel_channel_groups', 'channel_id', 'group_id'
name
Char
required=True
translate=True
args: 'Name'
nbr_documents
Integer
compute='_count_presentations'
store=True
args: 'Number of Documents'
nbr_infographics
Integer
compute='_count_presentations'
store=True
args: 'Number of Infographics'
nbr_presentations
Integer
compute='_count_presentations'
store=True
args: 'Number of Presentations'
nbr_videos
Integer
compute='_count_presentations'
store=True
args: 'Number of Videos'
promote_strategy
Selection
default='most_voted'
required=True
string='Featuring Policy'
args: [('none', 'No Featured Presentation'), ('latest', 'Latest Published'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed'), ('custom', 'Featured Presentation')]
promoted_slide_id
Many2one → slide.slide
compute='_compute_promoted_slide_id'
store=True
string='Featured Slide'
args: 'slide.slide'
publish_template_id
Many2one → mail.template
default=<expr>
help='Email template to send slide publication through email'
string='Published Template'
args: 'mail.template'
sequence
Integer
default=10
help='Display order'
share_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Shared Template'
args: 'mail.template'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'channel_id'
total
Integer
compute='_count_presentations'
store=True
upload_group_ids
Many2many → res.groups
help='Groups allowed to upload presentations in this channel. If void, every user can upload.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
visibility
Selection
default='public'
required=True
args: [('public', 'Public'), ('private', 'Private'), ('partial', 'Show channel but restrict presentations')]
change_visibility(self)
message_post(self, parent_id=False, subtype=None, **kwargs)
write(self, vals)
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
required=True
string='Presentation'
args: 'slide.slide'
url
Char
required=True
args: 'Third Party Website URL'
add_embed_url(self, slide_id, url)
active
Boolean
default=True
category_id
Many2one → slide.category
domain="[('channel_id', '=', channel_id)]"
string='Category'
args: 'slide.category'
channel_id
Many2one → slide.channel
required=True
string='Channel'
args: 'slide.channel'
datas
Binary
attachment=True
args: 'Content'
date_published
Datetime
description
Text
translate=True
args: 'Description'
dislikes
Integer
document_id
Char
help='Youtube or Google Document ID'
args: 'Document ID'
download_security
Selection
default='user'
required=True
string='Download Security'
args: [('none', 'No One'), ('user', 'Authenticated Users Only'), ('public', 'Everyone')]
embed_code
Text
compute='_get_embed_code'
readonly=True
args: 'Embed Code'
embed_views
Integer
embedcount_ids
One2many → slide.embed
string='Embed Count'
args: 'slide.embed', 'slide_id'
image
Binary
attachment=True
args: 'Image'
image_medium
Binary
attachment=True
compute='_get_image'
store=True
args: 'Medium'
image_thumb
Binary
attachment=True
compute='_get_image'
store=True
args: 'Thumbnail'
index_content
Text
likes
Integer
mime_type
Char
name
Char
required=True
translate=True
args: 'Title'
slide_type
Selection
default='document'
help='The document type will be set automatically based on the document URL and properties (e.g. height and width for presentation and document).'
required=True
string='Type'
args: [('infographic', 'Infographic'), ('presentation', 'Presentation'), ('document', 'Document'), ('video', 'Video')]
slide_views
Integer
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: 'Total # Views'
url
Char
help='Youtube or Google Document URL'
args: 'Document URL'
check_field_access_rights(self, operation, fields)
create(self, values)
get_access_action(self, access_uid=None)
get_most_viewed_slides(self, limit=20)
get_related_slides(self, limit=20)
on_change_url(self)
send_share_email(self, email)
write(self, values)
name
Char
required=True
translate=True
args: 'Name'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/10.0/website_slides |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Christophe Simonis, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Denis Vermylen (dve), Jairo Llopis, Aurélien Warnon |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:50:49 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - website - web - base - web_editor - web_planner - website_mail - base_setup - web_kanban - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | Share and Publish Videos, Presentations and Documents' ====================================================== * Website Application * Channel Management * Filters and Tagging * Statistics of Presentation * Channel Subscription * Supported document types : PDF, images, YouTube videos and Google Drive documents) |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_frontend |
Slide | ir.ui.view | qweb | Inherits website.assets_frontend |
channel_not_found |
Private Presentation | ir.ui.view | qweb | New |
channels |
Channels | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
home |
Odoo Slides | ir.ui.view | qweb | New |
opt_subscription_on_channels |
Subscription | ir.ui.view | qweb | Inherits website_slides.channels |
related_slides |
Related Slide | ir.ui.view | qweb | New |
slide_channel_view_search |
slide.channel.search | slide.channel | search | New |
slide_detail_view |
Slide Detailed View | ir.ui.view | qweb | New |
slide_footer |
Footer Slides Link | ir.ui.view | qweb | Inherits website.footer_default |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slide_social_media |
Share on Social Networks | ir.ui.view | qweb | New |
slides_channel_header |
Slides Channel Header | ir.ui.view | qweb | New |
slides_grid_view |
Slides (Grid View) | ir.ui.view | qweb | New |
slides_search |
Searching Slides | ir.ui.view | qweb | New |
slides_share |
Slides Media Share | ir.ui.view | qweb | New |
view_slide_channel_form |
slide.channel.form | slide.channel | form | New |
view_slide_channel_tree |
slide.channel.tree | slide.channel | tree | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_graph |
slide.slide.graph | slide.slide | graph | New |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.tree | slide.slide | tree | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.tree | slide.tag | tree | New |
view_slides_category_form |
slide.category.form | slide.category | form | New |
view_slides_category_tree |
slide.category.tree | slide.category | tree | New |
view_website_config_settings |
Website livechat settings | website.config.settings | xpath | Inherits website.view_website_config_settings |
website_slides.slide_embed_assets |
Website slides embed assets | ir.ui.view | qweb | New |
channel_id
Many2one → slide.channel
ondelete='cascade'
required=True
string='Channel'
args: 'slide.channel'
name
Char
required=True
translate=True
args: 'Name'
nbr_documents
Integer
compute='_count_presentations'
store=True
args: 'Number of Documents'
nbr_infographics
Integer
compute='_count_presentations'
store=True
args: 'Number of Infographics'
nbr_presentations
Integer
compute='_count_presentations'
store=True
args: 'Number of Presentations'
nbr_videos
Integer
compute='_count_presentations'
store=True
args: 'Number of Videos'
sequence
Integer
default=10
help='Display order'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'category_id'
total
Integer
compute='_count_presentations'
store=True
No public methods.
access_error_msg
Html
default='<p>This channel is private and its content is restricted to some users.</p>'
help='Message to display when not accessible due to access rights'
sanitize_attributes=False
translate=html_translate
args: 'Error Message'
active
Boolean
default=True
can_see
Boolean
compute='_compute_access'
search='_search_can_see'
args: 'Can See'
can_see_full
Boolean
compute='_compute_access'
args: 'Full Access'
can_upload
Boolean
compute='_compute_access'
args: 'Can Upload'
category_ids
One2many → slide.category
string='Categories'
args: 'slide.category', 'channel_id'
custom_slide_id
Many2one → slide.slide
string='Slide to Promote'
args: 'slide.slide'
description
Html
sanitize_attributes=False
translate=html_translate
args: 'Description'
group_ids
Many2many → res.groups
help='Groups allowed to see presentations in this channel'
string='Channel Groups'
args: 'res.groups', 'rel_channel_groups', 'channel_id', 'group_id'
name
Char
required=True
translate=True
args: 'Name'
nbr_documents
Integer
compute='_count_presentations'
store=True
args: 'Number of Documents'
nbr_infographics
Integer
compute='_count_presentations'
store=True
args: 'Number of Infographics'
nbr_presentations
Integer
compute='_count_presentations'
store=True
args: 'Number of Presentations'
nbr_videos
Integer
compute='_count_presentations'
store=True
args: 'Number of Videos'
promote_strategy
Selection
default='most_voted'
required=True
string='Featuring Policy'
args: [('none', 'No Featured Presentation'), ('latest', 'Latest Published'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed'), ('custom', 'Featured Presentation')]
promoted_slide_id
Many2one → slide.slide
compute='_compute_promoted_slide_id'
store=True
string='Featured Slide'
args: 'slide.slide'
publish_template_id
Many2one → mail.template
default=<expr>
help='Email template to send slide publication through email'
string='Published Template'
args: 'mail.template'
sequence
Integer
default=10
help='Display order'
share_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Shared Template'
args: 'mail.template'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'channel_id'
total
Integer
compute='_count_presentations'
store=True
upload_group_ids
Many2many → res.groups
help='Groups allowed to upload presentations in this channel. If void, every user can upload.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
visibility
Selection
default='public'
required=True
args: [('public', 'Public'), ('private', 'Private'), ('partial', 'Show channel but restrict presentations')]
change_visibility(self)
message_post(self, parent_id=False, subtype=None, **kwargs)
write(self, vals)
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
required=True
string='Presentation'
args: 'slide.slide'
url
Char
required=True
args: 'Third Party Website URL'
add_embed_url(self, slide_id, url)
active
Boolean
default=True
category_id
Many2one → slide.category
domain="[('channel_id', '=', channel_id)]"
string='Category'
args: 'slide.category'
channel_id
Many2one → slide.channel
required=True
string='Channel'
args: 'slide.channel'
datas
Binary
attachment=True
args: 'Content'
date_published
Datetime
description
Text
translate=True
args: 'Description'
dislikes
Integer
document_id
Char
help='Youtube or Google Document ID'
args: 'Document ID'
download_security
Selection
default='user'
required=True
string='Download Security'
args: [('none', 'No One'), ('user', 'Authentified Users Only'), ('public', 'Everyone')]
embed_code
Text
compute='_get_embed_code'
readonly=True
args: 'Embed Code'
embed_views
Integer
embedcount_ids
One2many → slide.embed
string='Embed Count'
args: 'slide.embed', 'slide_id'
image
Binary
attachment=True
args: 'Image'
image_medium
Binary
attachment=True
compute='_get_image'
store=True
args: 'Medium'
image_thumb
Binary
attachment=True
compute='_get_image'
store=True
args: 'Thumbnail'
index_content
Text
likes
Integer
mime_type
Char
name
Char
required=True
translate=True
args: 'Title'
slide_type
Selection
default='document'
help='The document type will be set automatically based on the document URL and properties (e.g. height and width for presentation and document).'
required=True
string='Type'
args: [('infographic', 'Infographic'), ('presentation', 'Presentation'), ('document', 'Document'), ('video', 'Video')]
slide_views
Integer
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: 'Total # Views'
url
Char
help='Youtube or Google Document URL'
args: 'Document URL'
website_message_ids
One2many → mail.message
domain=<expr>
help='Website communication history'
string='Website Messages'
args: 'mail.message', 'res_id'
check_field_access_rights(self, operation, fields)
create(self, values)
get_access_action(self)
get_most_viewed_slides(self, limit=20)
get_related_slides(self, limit=20)
on_change_url(self)
send_share_email(self, email)
write(self, values)
name
Char
required=True
translate=True
args: 'Name'
No public methods.
website_slide_google_app_key
Char
string='Google Doc Key'
get_default_website_slide_google_app_key(self, fields)
set_website_slide_google_app_key(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/9.0/website_slides |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, David Monjoie, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Yannick Tivisse, qsm-odoo, odoo-tac, Christophe Monniez |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:48:31 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - website - web - base - web_editor - web_planner - website_mail - base_setup - web_kanban - bus - marketing |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | Share and Publish Videos, Presentations and Documents' ====================================================== * Website Application * Channel Management * Filters and Tagging * Statistics of Presentation * Channel Subscription * Supported document types : PDF, images, YouTube videos and Google Drive documents) |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_frontend |
Slide | ir.ui.view | qweb | Inherits website.assets_frontend |
channel_not_found |
Private Presentation | ir.ui.view | qweb | New |
channels |
Channels | ir.ui.view | qweb | New |
embed_slide |
Embedded Slide Page | ir.ui.view | qweb | New |
embed_slide_forbidden |
Forbidden Embedded Slide | ir.ui.view | qweb | New |
home |
Odoo Slides | ir.ui.view | qweb | New |
opt_subscription_on_channels |
Subscription | ir.ui.view | qweb | Inherits website_slides.channels |
related_slides |
Related Slide | ir.ui.view | qweb | New |
slide_detail_view |
Slide Detailed View | ir.ui.view | qweb | New |
slide_footer |
Footer Slides Link | ir.ui.view | qweb | Inherits website.footer_default |
slide_social_email |
Share by Email | ir.ui.view | qweb | New |
slide_social_embed |
Share on Your Website | ir.ui.view | qweb | New |
slide_social_media |
Share on Social Networks | ir.ui.view | qweb | New |
slides_channel_header |
Slides Channel Header | ir.ui.view | qweb | New |
slides_grid_view |
Slides (Grid View) | ir.ui.view | qweb | New |
slides_search |
Searching Slides | ir.ui.view | qweb | New |
slides_share |
Slides Media Share | ir.ui.view | qweb | New |
view_slide_channel_form |
slide.channel.form | slide.channel | form | New |
view_slide_channel_tree |
slide.channel.tree | slide.channel | tree | New |
view_slide_slide_form |
slide.slide.form | slide.slide | form | New |
view_slide_slide_graph |
slide.slide.graph | slide.slide | graph | New |
view_slide_slide_search |
slide.slide.filter | slide.slide | search | New |
view_slide_slide_tree |
slide.slide.tree | slide.slide | tree | New |
view_slide_tag_form |
slide.tag.form | slide.tag | form | New |
view_slide_tag_tree |
slide.tag.tree | slide.tag | tree | New |
view_slides_category_form |
slide.category.form | slide.category | form | New |
view_slides_category_tree |
slide.category.tree | slide.category | tree | New |
view_website_config_settings |
Website livechat settings | website.config.settings | xpath | Inherits website.view_website_config_settings |
website_slides.slide_embed_assets |
Website slides embed assets | ir.ui.view | qweb | New |
channel_id
Many2one → slide.channel
ondelete='cascade'
required=True
string='Channel'
args: 'slide.channel'
name
Char
required=True
translate=True
args: 'Name'
nbr_documents
Integer
compute='_count_presentations'
store=True
args: 'Number of Documents'
nbr_infographics
Integer
compute='_count_presentations'
store=True
args: 'Number of Infographics'
nbr_presentations
Integer
compute='_count_presentations'
store=True
args: 'Number of Presentations'
nbr_videos
Integer
compute='_count_presentations'
store=True
args: 'Number of Videos'
sequence
Integer
default=10
help='Display order'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'category_id'
total
Integer
compute='_count_presentations'
store=True
No public methods.
access_error_msg
Html
default='<p>This channel is private and its content is restricted to some users.</p>'
help='Message to display when not accessible due to access rights'
translate=True
args: 'Error Message'
can_see
Boolean
compute='_compute_access'
search='_search_can_see'
args: 'Can See'
can_see_full
Boolean
compute='_compute_access'
args: 'Full Access'
can_upload
Boolean
compute='_compute_access'
args: 'Can Upload'
category_ids
One2many → slide.category
string='Categories'
args: 'slide.category', 'channel_id'
custom_slide_id
Many2one → slide.slide
string='Slide to Promote'
args: 'slide.slide'
description
Html
translate=True
args: 'Description'
group_ids
Many2many → res.groups
help='Groups allowed to see presentations in this channel'
string='Channel Groups'
args: 'res.groups', 'rel_channel_groups', 'channel_id', 'group_id'
name
Char
required=True
translate=True
args: 'Name'
nbr_documents
Integer
compute='_count_presentations'
store=True
args: 'Number of Documents'
nbr_infographics
Integer
compute='_count_presentations'
store=True
args: 'Number of Infographics'
nbr_presentations
Integer
compute='_count_presentations'
store=True
args: 'Number of Presentations'
nbr_videos
Integer
compute='_count_presentations'
store=True
args: 'Number of Videos'
promote_strategy
Selection
default='most_voted'
required=True
string='Featuring Policy'
args: [('none', 'No Featured Presentation'), ('latest', 'Latest Published'), ('most_voted', 'Most Voted'), ('most_viewed', 'Most Viewed'), ('custom', 'Featured Presentation')]
promoted_slide_id
Many2one → slide.slide
compute='_compute_promoted_slide_id'
store=True
string='Featured Slide'
args: 'slide.slide'
publish_template_id
Many2one → mail.template
default=<expr>
help='Email template to send slide publication through email'
string='Published Template'
args: 'mail.template'
sequence
Integer
default=10
help='Display order'
share_template_id
Many2one → mail.template
default=<expr>
help='Email template used when sharing a slide'
string='Shared Template'
args: 'mail.template'
slide_ids
One2many → slide.slide
string='Slides'
args: 'slide.slide', 'channel_id'
total
Integer
compute='_count_presentations'
store=True
upload_group_ids
Many2many → res.groups
help='Groups allowed to upload presentations in this channel. If void, every user can upload.'
string='Upload Groups'
args: 'res.groups', 'rel_upload_groups', 'channel_id', 'group_id'
visibility
Selection
default='public'
required=True
args: [('public', 'Public'), ('private', 'Private'), ('partial', 'Show channel but restrict presentations')]
change_visibility(self)
count_views
Integer
default=1
args: '# Views'
slide_id
Many2one → slide.slide
index=True
required=True
string='Presentation'
args: 'slide.slide'
url
Char
required=True
args: 'Third Party Website URL'
add_embed_url(self, slide_id, url)
category_id
Many2one → slide.category
domain="[('channel_id', '=', channel_id)]"
string='Category'
args: 'slide.category'
channel_id
Many2one → slide.channel
required=True
string='Channel'
args: 'slide.channel'
datas
Binary
date_published
Datetime
description
Text
translate=True
args: 'Description'
dislikes
Integer
document_id
Char
help='Youtube or Google Document ID'
args: 'Document ID'
download_security
Selection
default='user'
required=True
string='Download Security'
args: [('none', 'No One'), ('user', 'Authentified Users Only'), ('public', 'Everyone')]
embed_code
Text
compute='_get_embed_code'
readonly=True
args: 'Embed Code'
embed_views
Integer
embedcount_ids
One2many → slide.embed
string='Embed Count'
args: 'slide.embed', 'slide_id'
image
Binary
attachment=True
args: 'Image'
image_medium
Binary
attachment=True
compute='_get_image'
store=True
args: 'Medium'
image_thumb
Binary
attachment=True
compute='_get_image'
store=True
args: 'Thumbnail'
index_content
Text
likes
Integer
mime_type
Char
name
Char
required=True
translate=True
args: 'Title'
slide_type
Selection
default='document'
help='Document type will be set automatically depending on file type, height and width.'
required=True
string='Type'
args: [('infographic', 'Infographic'), ('presentation', 'Presentation'), ('document', 'Document'), ('video', 'Video')]
slide_views
Integer
tag_ids
Many2many → slide.tag
string='Tags'
args: 'slide.tag', 'rel_slide_tag', 'slide_id', 'tag_id'
total_views
Integer
compute='_compute_total'
default='0'
store=True
args: 'Total # Views'
url
Char
help='Youtube or Google Document URL'
args: 'Document URL'
website_message_ids
One2many → mail.message
domain=<expr>
help='Website communication history'
string='Website Messages'
args: 'mail.message', 'res_id'
check_field_access_rights(self, operation, fields)
create(self, values)
get_most_viewed_slides(self, limit=20)
get_related_slides(self, limit=20)
on_change_url(self)
send_share_email(self, email)
write(self, values)
name
Char
required=True
args: 'Name'
No public methods.
website_slide_google_app_key
Char
string='Google Doc Key'
get_default_website_slide_google_app_key(self, fields)
set_website_slide_google_app_key(self)