| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/19.0/website_forum |
| VERSION | |
| VERSION | 1.2 |
| CATEGORY | |
| CATEGORY | Website/Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo S.A. |
| MAINTAINERS | |
| MAINTAINERS | Odoo S.A. |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Thibault Delavallée, Denis Ledoux, Xavier ALT, Nicolas Martinelli, Géry Debongnie, Aaron Bohy, Jeremy Kersten, qsm-odoo, Julien Castiaux, Sébastien Theys, Julien Mougenot, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Mathieu Duckerts-Antoine, abd-msyukyu-odoo, William Braeckman, Benjamin Vray, Benoit Socias, Nicolas Bayet, luvi, alsh-odoo, Victor Piryns (pivi), Thomas Becquevort (thbe), Pierre-Yves Dufays, Dylan Kiss (dyki), Mayurrajsinh Rathod, bram1000, divy-odoo, Mahdi Cheikh Rouhou (macr), Walid (wasa), Mehdi Outagant (MOU), Serge Bayet (seba), nihp-odoo, Chrysanthe (chgo), Adnan Saiyed, Rodolpho Lima, adch-odoo, Junqi Wu, Antoine (anso), Sébastien (blse), Pierre Pulinckx (PIPU), Pierre Pulinckx, Bastien PIERRE, Krzysztof Magusiak (krma), utma-odoo, Alessandro Lupo, Augustin (duau), romo, Serhii Rubanskyi, h4818, saurabh, sbbh-odoo, vega-odoo, Julien (jdeh), chpa-odoo, panj-odoo |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/app/forum |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:51:45 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - auth_signup - base_setup - base - web - bus - web_tour - html_editor - website_mail - website - digest - portal - http_routing - resource - social_media - google_recaptcha - utm - html_builder - website_profile - website_partner - gamification |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
geoip2 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Ask questions, get answers, no distractions
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
author_box |
author_box | ir.ui.view | qweb | New |
close_post |
Close Post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
default_faq |
Faq Accordion | div | New | |
display_activities |
Forum Profile Activities | ir.ui.view | qweb | New |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
Edit Post | ir.ui.view | qweb | New |
faq |
Frequently Asked Questions | ir.ui.view | qweb | New |
faq_karma |
Karma | ir.ui.view | qweb | New |
follow |
follow | ir.ui.view | qweb | New |
forum_all |
Forum Navigation | ir.ui.view | qweb | New |
forum_all_all_entries |
forum_all_all_entries | ir.ui.view | qweb | New |
forum_all_oe_structure_forum_all_top |
Forum Navigation (oe_structure_forum_all_top) | ir.ui.view | qweb | Inherits website_forum.forum_all |
forum_filter_tag |
Filtering Forum Tag | ir.ui.view | qweb | New |
forum_forum_view_form |
forum.forum.view.form | forum.forum | form | New |
forum_forum_view_form_add |
forum.forum.view.form.add | forum.forum | form | New |
forum_forum_view_search |
forum.forum.view.search | forum.forum | search | New |
forum_forum_view_tree |
forum.forum.view.list | forum.forum | list | New |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_index_tags |
Forum Tags | ir.ui.view | qweb | New |
forum_model_nav |
forum_model_nav | ir.ui.view | qweb | New |
forum_post_reason_view_list |
forum.post.reason.list | forum.post.reason | list | New |
forum_post_template_new_answer |
forum_post_template_new_answer | ir.ui.view | qweb | New |
forum_post_template_new_question |
forum_post_template_new_question | ir.ui.view | qweb | New |
forum_post_template_validation |
forum_post_template_validation | ir.ui.view | qweb | New |
forum_post_view_form |
forum.post.view.form | forum.post | form | New |
forum_post_view_graph |
forum.post.view.graph | forum.post | graph | New |
forum_post_view_kanban |
Forum Post Pages Kanban | forum.post | kanban | New |
forum_post_view_search |
forum.post.view.search | forum.post | search | New |
forum_post_view_tree |
forum.post.view.list | forum.post | list | New |
forum_related_posts |
Related Posts | ir.ui.view | qweb | New |
forum_sign_up_cta |
Sign-Up Call to Action | ir.ui.view | qweb | New |
forum_tag_view_form |
forum.tag.view.form | forum.tag | form | New |
forum_tag_view_list |
forum.tag.view.list | forum.tag | list | New |
gamification_karma_tracking_view_search |
gamification.karma.tracking.view.search.inherit.website.forum | gamification.karma.tracking | xpath | Inherits gamification.gamification_karma_tracking_view_search |
header |
Forum Index | ir.ui.view | qweb | New |
header_welcome_message |
Forum Welcome Message (oe_structure_forum_top) | ir.ui.view | qweb | Inherits website_forum.header |
layout |
Forum Layout | ir.ui.view | qweb | Inherits website.layout |
link_button |
link_button | ir.ui.view | qweb | New |
mark_as_offensive |
mark_as_offensive | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
Forum Moderation Queue | ir.ui.view | qweb | New |
new_question |
New Post | ir.ui.view | qweb | New |
no_results_message |
no_results_message | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_display |
post_display | ir.ui.view | qweb | New |
post_dropdown |
post_dropdown | ir.ui.view | qweb | New |
post_stats |
post_stats | ir.ui.view | qweb | New |
profile_access_denied |
profile_access_denied | ir.ui.view | qweb | Inherits website_profile.profile_access_denied |
show_flag_validator |
show_flag_validator | ir.ui.view | qweb | New |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_sidebar |
user_sidebar | ir.ui.view | qweb | New |
user_sidebar_body |
user_sidebar_body | ir.ui.view | qweb | New |
user_sidebar_header |
user_sidebar_header | ir.ui.view | qweb | New |
user_sidebar_mobile |
user_sidebar_mobile | ir.ui.view | qweb | New |
user_votes |
Forum User Votes | ir.ui.view | qweb | New |
vote |
vote | ir.ui.view | qweb | New |
website_forum.opt_last_post |
Show Last Post | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_list_view |
List View | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_post_count |
Show Post Count | ir.ui.view | qweb | Inherits website_forum.forum_all |
active
Boolean
default=True
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
authorized_group_id
Many2one → res.groups
can_moderate
Boolean
compute='_compute_can_moderate'
string='Is a moderator'
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='last_activity_date desc'
required=True
string='Default'
args: [('create_date desc', 'Newest'), ('last_activity_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
description
Text
translate=True
args: 'Description'
faq
Html
sanitize=True
sanitize_overridable=True
translate=html_translate
args: 'Guidelines'
has_pending_post
Boolean
compute='_compute_has_pending_post'
string='Has pending post'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all comments to answers'
karma_comment_convert_own
Integer
default=50
string='Convert own comments to answers'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Delete all comments'
karma_comment_unlink_own
Integer
default=50
string='Delete own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_edit_retag
Integer
default=75
string='Change question tags'
karma_editor
Integer
default=30
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_tag_create
Integer
default=30
string='Create new tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
last_post_id
Many2one → forum.post
compute='_compute_last_post_id'
args: 'forum.post'
mode
Selection
default='questions'
help='Questions mode: only one answer allowed\n Discussions mode: multiple answers allowed'
required=True
string='Mode'
args: [('questions', 'Questions (1 answer)'), ('discussions', 'Discussions (multiple answers)')]
name
Char
required=True
translate=True
args: 'Forum Name'
post_ids
One2many → forum.post
string='Posts'
args: 'forum.post', 'forum_id'
privacy
Selection
default='public'
help='Public: Forum is public\nSigned In: Forum is visible for signed in users\nSome users: Forum and their content are hidden for non members of selected group'
args: [('public', 'Public'), ('connected', 'Signed In'), ('private', 'Some users')]
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
sequence
Integer
default=1
args: 'Sequence'
tag_ids
One2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_id'
tag_most_used_ids
One2many → forum.tag
compute='_compute_tag_ids_usage'
string='Most used tags'
args: 'forum.tag'
tag_unused_ids
One2many → forum.tag
compute='_compute_tag_ids_usage'
string='Unused tags'
args: 'forum.tag'
total_answers
Integer
compute='_compute_forum_statistics'
args: '# Answers'
total_favorites
Integer
compute='_compute_forum_statistics'
args: '# Favorites'
total_posts
Integer
compute='_compute_forum_statistics'
args: '# Posts'
total_views
Integer
compute='_compute_forum_statistics'
args: '# Views'
welcome_message
Html
default=_get_default_welcome_message
sanitize_attributes=False
sanitize_form=False
translate=html_translate
args: 'Welcome Message'
create(self, vals_list)
go_to_website(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
can_accept
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Accept'
can_answer
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Answer'
can_ask
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Ask'
can_close
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Close'
can_comment
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Comment'
can_comment_convert
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Downvote'
can_edit
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Edit'
can_flag
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Flag'
can_moderate
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Moderate'
can_post
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Unlink'
can_upvote
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Upvote'
can_use_full_editor
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Use Full Editor'
can_view
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_compute_child_count'
store=True
args: 'Answers'
child_ids
One2many → forum.post
domain="[('forum_id', '=', forum_id)]"
string='Post Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
copy=False
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
copy=False
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
copy=False
readonly=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_compute_favorite_count'
store=True
args: 'Favorite'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
index=True
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_compute_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Convert comment to answer'
karma_close
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to close'
karma_comment
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to edit'
karma_flag
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to unlink'
last_activity_date
Datetime
default=fields.Datetime.now
help="Field to keep track of a post's last activity. Updated whenever it is replied to, or when a comment is added on the post or one of its replies."
readonly=True
required=True
args: 'Last activity on'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
index=True
ondelete='cascade'
readonly=True
string='Question'
args: 'forum.post'
plain_content
Text
compute='_compute_plain_content'
store=True
args: 'Plain Content'
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_compute_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Closed'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_post_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_compute_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_compute_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_compute_user_vote'
args: 'My Vote'
views
Integer
copy=False
default=0
readonly=True
args: 'Views'
vote_count
Integer
compute='_compute_vote_count'
store=True
args: 'Total Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_id
Many2one
readonly=True
related='forum_id.website_id'
website_message_ids
One2many
domain=<expr>
website_url
Char
compute='_compute_website_url'
args: 'Website URL'
write_date
Datetime
index=True
readonly=True
args: 'Updated on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id)
create(self, vals_list)
go_to_website(self)
mark_as_offensive_batch(self, key, values)
message_post(self, *, message_type='notification', **kwargs)
reopen(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Selection
default='basic'
string='Reason Type'
args: [('basic', 'Basic'), ('offensive', 'Offensive')]
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
index='btree_not_null'
readonly=False
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
index=True
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
readonly=False
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
ondelete='cascade'
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals_list)
write(self, vals)
color
Integer
forum_id
Many2one → forum.forum
index=True
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
domain=[('state', '=', 'active')]
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_post_id'
posts_count
Integer
compute='_compute_posts_count'
store=True
args: 'Number of Posts'
website_url
Char
compute='_compute_website_url'
args: 'Link to questions with the tag'
create(self, vals_list)
challenge_category
Selection
ondelete={'forum': 'set default'}
selection_add=[('forum', 'Website / Forum')]
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
get_gamification_redirection_data(self)
open_website_url(self)
forum_count
Integer
default=0
readonly=True
configurator_get_footer_links(self)
configurator_set_menu_links(self, menu_company, module_data)
create(self, vals_list)
get_suggested_controllers(self)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
author_box |
author_box | ir.ui.view | qweb | New |
close_post |
Close Post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
default_faq |
Faq Accordion | div | New | |
display_activities |
Forum Profile Activities | ir.ui.view | qweb | New |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
Edit Post | ir.ui.view | qweb | New |
faq |
Frequently Asked Questions | ir.ui.view | qweb | New |
faq_karma |
Karma | ir.ui.view | qweb | New |
follow |
follow | ir.ui.view | qweb | New |
forum_all |
Forum Navigation | ir.ui.view | qweb | New |
forum_all_all_entries |
forum_all_all_entries | ir.ui.view | qweb | New |
forum_all_oe_structure_forum_all_top |
Forum Navigation (oe_structure_forum_all_top) | ir.ui.view | qweb | Inherits website_forum.forum_all |
forum_filter_tag |
Filtering Forum Tag | ir.ui.view | qweb | New |
forum_forum_view_form |
forum.forum.view.form | forum.forum | form | New |
forum_forum_view_form_add |
forum.forum.view.form.add | forum.forum | form | New |
forum_forum_view_search |
forum.forum.view.search | forum.forum | search | New |
forum_forum_view_tree |
forum.forum.view.list | forum.forum | list | New |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_index_tags |
Forum Tags | ir.ui.view | qweb | New |
forum_model_nav |
forum_model_nav | ir.ui.view | qweb | New |
forum_post_reason_view_list |
forum.post.reason.list | forum.post.reason | list | New |
forum_post_template_new_answer |
forum_post_template_new_answer | ir.ui.view | qweb | New |
forum_post_template_new_question |
forum_post_template_new_question | ir.ui.view | qweb | New |
forum_post_template_validation |
forum_post_template_validation | ir.ui.view | qweb | New |
forum_post_view_form |
forum.post.view.form | forum.post | form | New |
forum_post_view_graph |
forum.post.view.graph | forum.post | graph | New |
forum_post_view_kanban |
Forum Post Pages Kanban | forum.post | kanban | New |
forum_post_view_search |
forum.post.view.search | forum.post | search | New |
forum_post_view_tree |
forum.post.view.list | forum.post | list | New |
forum_related_posts |
Related Posts | ir.ui.view | qweb | New |
forum_searchbar_input_snippet_options |
forum search bar snippet options | ir.ui.view | qweb | Inherits website.searchbar_input_snippet_options |
forum_sign_up_cta |
Sign-Up Call to Action | ir.ui.view | qweb | New |
forum_tag_view_form |
forum.tag.view.form | forum.tag | form | New |
forum_tag_view_list |
forum.tag.view.list | forum.tag | list | New |
gamification_karma_tracking_view_search |
gamification.karma.tracking.view.search.inherit.website.forum | gamification.karma.tracking | xpath | Inherits gamification.gamification_karma_tracking_view_search |
header |
Forum Index | ir.ui.view | qweb | New |
header_welcome_message |
Forum Welcome Message (oe_structure_forum_top) | ir.ui.view | qweb | Inherits website_forum.header |
layout |
Forum Layout | ir.ui.view | qweb | Inherits website.layout |
link_button |
link_button | ir.ui.view | qweb | New |
mark_as_offensive |
mark_as_offensive | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
Forum Moderation Queue | ir.ui.view | qweb | New |
new_question |
New Post | ir.ui.view | qweb | New |
no_results_message |
no_results_message | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_display |
post_display | ir.ui.view | qweb | New |
post_dropdown |
post_dropdown | ir.ui.view | qweb | New |
post_stats |
post_stats | ir.ui.view | qweb | New |
profile_access_denied |
profile_access_denied | ir.ui.view | qweb | Inherits website_profile.profile_access_denied |
show_flag_validator |
show_flag_validator | ir.ui.view | qweb | New |
snippet_options |
Forum Snippet Options | ir.ui.view | qweb | Inherits website.snippet_options |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_profile_sub_nav |
user_profile_sub_nav | ir.ui.view | qweb | Inherits website_profile.user_profile_sub_nav |
user_sidebar |
user_sidebar | ir.ui.view | qweb | New |
user_sidebar_body |
user_sidebar_body | ir.ui.view | qweb | New |
user_sidebar_header |
user_sidebar_header | ir.ui.view | qweb | New |
user_sidebar_mobile |
user_sidebar_mobile | ir.ui.view | qweb | New |
user_votes |
Forum User Votes | ir.ui.view | qweb | New |
view_users_form_forum |
res.users.form.forum | res.users | div | Inherits base.view_users_form |
vote |
vote | ir.ui.view | qweb | New |
website_forum.opt_last_post |
Show Last Post | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_list_view |
List View | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_post_count |
Show Post Count | ir.ui.view | qweb | Inherits website_forum.forum_all |
active
Boolean
default=True
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
authorized_group_id
Many2one → res.groups
can_moderate
Boolean
compute='_compute_can_moderate'
string='Is a moderator'
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='last_activity_date desc'
required=True
string='Default'
args: [('create_date desc', 'Newest'), ('last_activity_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
description
Text
translate=True
args: 'Description'
faq
Html
sanitize=True
sanitize_overridable=True
translate=html_translate
args: 'Guidelines'
has_pending_post
Boolean
compute='_compute_has_pending_post'
string='Has pending post'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all comments to answers'
karma_comment_convert_own
Integer
default=50
string='Convert own comments to answers'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Delete all comments'
karma_comment_unlink_own
Integer
default=50
string='Delete own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_edit_retag
Integer
default=75
string='Change question tags'
karma_editor
Integer
default=30
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_tag_create
Integer
default=30
string='Create new tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
last_post_id
Many2one → forum.post
compute='_compute_last_post_id'
args: 'forum.post'
mode
Selection
default='questions'
help='Questions mode: only one answer allowed\n Discussions mode: multiple answers allowed'
required=True
string='Mode'
args: [('questions', 'Questions (1 answer)'), ('discussions', 'Discussions (multiple answers)')]
name
Char
required=True
translate=True
args: 'Forum Name'
post_ids
One2many → forum.post
string='Posts'
args: 'forum.post', 'forum_id'
privacy
Selection
default='public'
help='Public: Forum is public\nSigned In: Forum is visible for signed in users\nSome users: Forum and their content are hidden for non members of selected group'
args: [('public', 'Public'), ('connected', 'Signed In'), ('private', 'Some users')]
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
sequence
Integer
default=1
args: 'Sequence'
tag_ids
One2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_id'
tag_most_used_ids
One2many → forum.tag
compute='_compute_tag_ids_usage'
string='Most used tags'
args: 'forum.tag'
tag_unused_ids
One2many → forum.tag
compute='_compute_tag_ids_usage'
string='Unused tags'
args: 'forum.tag'
teaser
Text
compute='_compute_teaser'
store=True
args: 'Teaser'
total_answers
Integer
compute='_compute_forum_statistics'
args: '# Answers'
total_favorites
Integer
compute='_compute_forum_statistics'
args: '# Favorites'
total_posts
Integer
compute='_compute_forum_statistics'
args: '# Posts'
total_views
Integer
compute='_compute_forum_statistics'
args: '# Views'
welcome_message
Html
default=_get_default_welcome_message
sanitize_attributes=False
sanitize_form=False
translate=html_translate
args: 'Welcome Message'
create(self, vals_list)
go_to_website(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
can_accept
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Accept'
can_answer
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Answer'
can_ask
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Ask'
can_close
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Close'
can_comment
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Comment'
can_comment_convert
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Downvote'
can_edit
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Edit'
can_flag
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Flag'
can_moderate
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Moderate'
can_post
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Unlink'
can_upvote
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Upvote'
can_use_full_editor
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Use Full Editor'
can_view
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_compute_child_count'
store=True
args: 'Answers'
child_ids
One2many → forum.post
domain="[('forum_id', '=', forum_id)]"
string='Post Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
copy=False
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
copy=False
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
copy=False
readonly=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_compute_favorite_count'
store=True
args: 'Favorite'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_compute_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Convert comment to answer'
karma_close
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to close'
karma_comment
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to edit'
karma_flag
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to unlink'
last_activity_date
Datetime
default=fields.Datetime.now
help="Field to keep track of a post's last activity. Updated whenever it is replied to, or when a comment is added on the post or one of its replies."
readonly=True
required=True
args: 'Last activity on'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
index=True
ondelete='cascade'
readonly=True
string='Question'
args: 'forum.post'
plain_content
Text
compute='_compute_plain_content'
store=True
args: 'Plain Content'
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_compute_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Closed'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_post_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_compute_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_compute_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_compute_user_vote'
args: 'My Vote'
views
Integer
copy=False
default=0
readonly=True
args: 'Views'
vote_count
Integer
compute='_compute_vote_count'
store=True
args: 'Total Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_id
Many2one
readonly=True
related='forum_id.website_id'
website_message_ids
One2many
domain=<expr>
website_url
Char
compute='_compute_website_url'
args: 'Website URL'
write_date
Datetime
index=True
readonly=True
args: 'Updated on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id)
create(self, vals_list)
go_to_website(self)
mark_as_offensive_batch(self, key, values)
message_post(self, *, message_type='notification', **kwargs)
reopen(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Selection
default='basic'
string='Reason Type'
args: [('basic', 'Basic'), ('offensive', 'Offensive')]
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
readonly=False
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
readonly=False
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
ondelete='cascade'
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals_list)
write(self, values)
color
Integer
forum_id
Many2one → forum.forum
index=True
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
domain=[('state', '=', 'active')]
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_post_id'
posts_count
Integer
compute='_compute_posts_count'
store=True
args: 'Number of Posts'
website_url
Char
compute='_compute_website_url'
args: 'Link to questions with the tag'
create(self, vals_list)
challenge_category
Selection
ondelete={'forum': 'set default'}
selection_add=[('forum', 'Website / Forum')]
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
get_gamification_redirection_data(self)
open_website_url(self)
forum_count
Integer
default=0
readonly=True
configurator_get_footer_links(self)
configurator_set_menu_links(self, menu_company, module_data)
create(self, vals_list)
get_suggested_controllers(self)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
author_box |
author_box | ir.ui.view | qweb | New |
close_post |
Close Post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
default_faq |
Faq Accordion | section | New | |
display_activities |
Forum Profile Activities | ir.ui.view | qweb | New |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
Edit Post | ir.ui.view | qweb | New |
faq |
Frequently Asked Questions | ir.ui.view | qweb | New |
faq_karma |
Karma | ir.ui.view | qweb | New |
follow |
follow | ir.ui.view | qweb | New |
forum_all |
Forum Navigation | ir.ui.view | qweb | New |
forum_all_all_entries |
forum_all_all_entries | ir.ui.view | qweb | New |
forum_all_oe_structure_forum_all_top |
Forum Navigation (oe_structure_forum_all_top) | ir.ui.view | qweb | Inherits website_forum.forum_all |
forum_filter_tag |
Filtering Forum Tag | ir.ui.view | qweb | New |
forum_forum_view_form |
forum.forum.view.form | forum.forum | form | New |
forum_forum_view_form_add |
forum.forum.view.form.add | forum.forum | form | New |
forum_forum_view_search |
forum.forum.view.search | forum.forum | search | New |
forum_forum_view_tree |
forum.forum.view.tree | forum.forum | tree | New |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_index_tags |
Forum Tags | ir.ui.view | qweb | New |
forum_model_nav |
forum_model_nav | ir.ui.view | qweb | New |
forum_post_reason_view_list |
forum.post.reason.list | forum.post.reason | tree | New |
forum_post_template_new_answer |
forum_post_template_new_answer | ir.ui.view | qweb | New |
forum_post_template_new_question |
forum_post_template_new_question | ir.ui.view | qweb | New |
forum_post_template_validation |
forum_post_template_validation | ir.ui.view | qweb | New |
forum_post_view_form |
forum.post.view.form | forum.post | form | New |
forum_post_view_graph |
forum.post.view.graph | forum.post | graph | New |
forum_post_view_kanban |
Forum Post Pages Kanban | forum.post | kanban | New |
forum_post_view_search |
forum.post.view.search | forum.post | search | New |
forum_post_view_tree |
forum.post.view.tree | forum.post | tree | New |
forum_searchbar_input_snippet_options |
forum search bar snippet options | ir.ui.view | qweb | Inherits website.searchbar_input_snippet_options |
forum_tag_view_form |
forum.tag.view.form | forum.tag | form | New |
forum_tag_view_list |
forum.tag.view.list | forum.tag | tree | New |
gamification_karma_tracking_view_search |
gamification.karma.tracking.view.search.inherit.website.forum | gamification.karma.tracking | xpath | Inherits gamification.gamification_karma_tracking_view_search |
header |
Forum Index | ir.ui.view | qweb | New |
header_welcome_message |
Forum Welcome Message (oe_structure_forum_top) | ir.ui.view | qweb | Inherits website_forum.header |
layout |
Forum Layout | ir.ui.view | qweb | Inherits website.layout |
link_button |
link_button | ir.ui.view | qweb | New |
mark_as_offensive |
mark_as_offensive | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
Forum Moderation Queue | ir.ui.view | qweb | New |
new_question |
New Post | ir.ui.view | qweb | New |
no_results_message |
no_results_message | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_display |
post_display | ir.ui.view | qweb | New |
post_dropdown |
post_dropdown | ir.ui.view | qweb | New |
post_stats |
post_stats | ir.ui.view | qweb | New |
profile_access_denied |
profile_access_denied | ir.ui.view | qweb | Inherits website_profile.profile_access_denied |
show_flag_validator |
show_flag_validator | ir.ui.view | qweb | New |
snippet_options |
Forum Snippet Options | ir.ui.view | qweb | Inherits website.snippet_options |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_profile_sub_nav |
user_profile_sub_nav | ir.ui.view | qweb | Inherits website_profile.user_profile_sub_nav |
user_sidebar |
user_sidebar | ir.ui.view | qweb | New |
user_sidebar_body |
user_sidebar_body | ir.ui.view | qweb | New |
user_sidebar_header |
user_sidebar_header | ir.ui.view | qweb | New |
user_sidebar_mobile |
user_sidebar_mobile | ir.ui.view | qweb | New |
user_votes |
Forum User Votes | ir.ui.view | qweb | New |
view_users_form_forum |
res.users.form.forum | res.users | div | Inherits base.view_users_form |
vote |
vote | ir.ui.view | qweb | New |
website_forum.opt_last_post |
Show Last Post | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_list_view |
List View | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_post_count |
Show Post Count | ir.ui.view | qweb | Inherits website_forum.forum_all |
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
authorized_group_id
Many2one → res.groups
can_moderate
Boolean
compute='_compute_can_moderate'
string='Is a moderator'
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='last_activity_date desc'
required=True
string='Default'
args: [('create_date desc', 'Newest'), ('last_activity_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
description
Text
translate=True
args: 'Description'
faq
Html
sanitize=True
sanitize_overridable=True
translate=html_translate
args: 'Guidelines'
has_pending_post
Boolean
compute='_compute_has_pending_post'
string='Has pending post'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all answers to comments and vice versa'
karma_comment_convert_own
Integer
default=50
string='Convert own answers to comments and vice versa'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Unlink all comments'
karma_comment_unlink_own
Integer
default=50
string='Unlink own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_edit_retag
Integer
default=75
string='Change question tags'
karma_editor
Integer
default=30
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_tag_create
Integer
default=30
string='Create new tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
last_post_id
Many2one → forum.post
compute='_compute_last_post_id'
args: 'forum.post'
menu_id
Many2one → website.menu
copy=False
args: 'website.menu', 'Menu'
mode
Selection
default='questions'
help='Questions mode: only one answer allowed\n Discussions mode: multiple answers allowed'
required=True
string='Mode'
args: [('questions', 'Questions (1 answer)'), ('discussions', 'Discussions (multiple answers)')]
name
Char
required=True
translate=True
args: 'Forum Name'
post_ids
One2many → forum.post
string='Posts'
args: 'forum.post', 'forum_id'
privacy
Selection
default='public'
help='Public: Forum is public\nSigned In: Forum is visible for signed in users\nSome users: Forum and their content are hidden for non members of selected group'
args: [('public', 'Public'), ('connected', 'Signed In'), ('private', 'Some users')]
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
sequence
Integer
default=1
args: 'Sequence'
tag_ids
One2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_id'
tag_most_used_ids
One2many → forum.tag
compute='_compute_tag_ids_usage'
string='Most used tags'
args: 'forum.tag'
tag_unused_ids
One2many → forum.tag
compute='_compute_tag_ids_usage'
string='Unused tags'
args: 'forum.tag'
teaser
Text
compute='_compute_teaser'
store=True
args: 'Teaser'
total_answers
Integer
compute='_compute_forum_statistics'
args: '# Answers'
total_favorites
Integer
compute='_compute_forum_statistics'
args: '# Favorites'
total_posts
Integer
compute='_compute_forum_statistics'
args: '# Posts'
total_views
Integer
compute='_compute_forum_statistics'
args: '# Views'
welcome_message
Html
default=_get_default_welcome_message
sanitize_attributes=False
sanitize_form=False
translate=html_translate
args: 'Welcome Message'
create(self, vals_list)
go_to_website(self)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
can_accept
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Accept'
can_answer
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Answer'
can_ask
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Ask'
can_close
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Close'
can_comment
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Comment'
can_comment_convert
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Downvote'
can_edit
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Edit'
can_flag
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Flag'
can_moderate
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Moderate'
can_post
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Unlink'
can_upvote
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Upvote'
can_use_full_editor
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Can Use Full Editor'
can_view
Boolean
compute='_compute_post_karma_rights'
compute_sudo=False
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_compute_child_count'
store=True
args: 'Answers'
child_ids
One2many → forum.post
domain="[('forum_id', '=', forum_id)]"
string='Post Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
copy=False
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
copy=False
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
copy=False
readonly=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_compute_favorite_count'
store=True
args: 'Favorite'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_compute_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Convert comment to answer'
karma_close
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to close'
karma_comment
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to edit'
karma_flag
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_compute_post_karma_rights'
compute_sudo=False
args: 'Karma to unlink'
last_activity_date
Datetime
default=fields.Datetime.now
help="Field to keep track of a post's last activity. Updated whenever it is replied to, or when a comment is added on the post or one of its replies."
readonly=True
required=True
args: 'Last activity on'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
index=True
ondelete='cascade'
readonly=True
string='Question'
args: 'forum.post'
plain_content
Text
compute='_compute_plain_content'
store=True
args: 'Plain Content'
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_compute_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Closed'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_compute_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_compute_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_compute_user_vote'
args: 'My Vote'
views
Integer
copy=False
default=0
readonly=True
args: 'Views'
vote_count
Integer
compute='_compute_vote_count'
store=True
args: 'Total Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_id
Many2one
readonly=True
related='forum_id.website_id'
website_message_ids
One2many
domain=<expr>
website_url
Char
compute='_compute_website_url'
args: 'Website URL'
write_date
Datetime
index=True
readonly=True
args: 'Updated on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id)
create(self, vals_list)
flag(self)
go_to_website(self)
mark_as_offensive(self, reason_id)
mark_as_offensive_batch(self, key, values)
message_post(self, *, message_type='notification', **kwargs)
post_notification(self)
refuse(self)
reopen(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Selection
default='basic'
string='Reason Type'
args: [('basic', 'Basic'), ('offensive', 'Offensive')]
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
readonly=False
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
readonly=False
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
ondelete='cascade'
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals_list)
write(self, values)
forum_id
Many2one → forum.forum
index=True
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
domain=[('state', '=', 'active')]
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_id'
posts_count
Integer
compute='_compute_posts_count'
store=True
args: 'Number of Posts'
website_url
Char
compute='_compute_website_url'
args: 'Link to questions with the tag'
create(self, vals_list)
challenge_category
Selection
ondelete={'forum': 'set default'}
selection_add=[('forum', 'Website / Forum')]
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.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
get_gamification_redirection_data(self)
open_website_url(self)
forum_count
Integer
default=0
readonly=True
configurator_get_footer_links(self)
configurator_set_menu_links(self, menu_company, module_data)
create(self, vals_list)
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/16.0/website_forum |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Website/Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Denis Ledoux, Stefan Rijnhart, Jeremy Kersten, Yannick Tivisse, qsm-odoo, Romain Derie, Aurélien Warnon, Romeo Fragomeli, Samuel Degueldre, Achraf (abz), Tiffany Chang (tic), Gorash, William Braeckman, Romain Estievenart, Kevin Baptiste, Benoit Socias, Hardik Prajapati, Guillaume (gdi), MerlinGuillaume, Antoine Guenet, Arthur Detroux (ard), Florian Charlier, luvi, Fabio Barbero, niyasraphy, Thomas Lefebvre (thle), Louis Wicket (wil), Thomas Becquevort (thbe), amdi-odoo, Tom De Caluwé, Soukéina Bojabza, flvr-odoo, Vivek Pathak, divy-odoo, Mahdi Cheikh Rouhou (macr), Astik Singh, Lopes Marc (loma), Thomas Josse |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/app/forum |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:53 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - auth_signup - base_setup - base - web - bus - web_tour - website_mail - website - digest - portal - web_editor - http_routing - resource - social_media - google_recaptcha - utm - website_profile - website_partner - gamification - web_kanban_gauge |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Ask questions, get answers, no distractions
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
close_post |
Close Post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
default_faq |
Faq Accordion | section | New | |
display_activities |
Forum Profile Activities | ir.ui.view | qweb | New |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
edit_post | ir.ui.view | qweb | New |
faq |
Frequently Asked Questions | ir.ui.view | qweb | New |
faq_karma |
Karma | ir.ui.view | qweb | New |
forum_all |
Forum Navigation | ir.ui.view | qweb | New |
forum_all_all_entries |
forum_all_all_entries | ir.ui.view | qweb | New |
forum_all_oe_structure_forum_all_top |
Forum Navigation (oe_structure_forum_all_top) | ir.ui.view | qweb | Inherits website_forum.forum_all |
forum_filter_tag |
Filtering Forum Tag | ir.ui.view | qweb | New |
forum_forum_view_form_add |
forum.forum.view.form.add | forum.forum | form | New |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_nav_header |
forum_nav_header | ir.ui.view | qweb | New |
forum_post_options |
forum_post_options | ir.ui.view | qweb | New |
forum_post_reason_view_list |
forum.post.reason.list | forum.post.reason | tree | New |
forum_post_template_new_answer |
forum_post_template_new_answer | ir.ui.view | qweb | New |
forum_post_template_new_question |
forum_post_template_new_question | ir.ui.view | qweb | New |
forum_post_template_validation |
forum_post_template_validation | ir.ui.view | qweb | New |
forum_post_view_kanban |
Forum Post Pages Kanban | forum.post | kanban | New |
forum_searchbar_input_snippet_options |
forum search bar snippet options | ir.ui.view | qweb | Inherits website.searchbar_input_snippet_options |
forum_tag_view_form |
forum.tag.form | forum.tag | form | New |
forum_tag_view_list |
forum.tag.list | forum.tag | tree | New |
forum_view_search |
forum.forum.search | forum.forum | search | New |
header |
Forum Index | ir.ui.view | qweb | New |
layout |
Forum Layout | ir.ui.view | qweb | Inherits website.layout |
link_button |
link_button | ir.ui.view | qweb | New |
mark_as_offensive |
mark_as_offensive | ir.ui.view | qweb | New |
moderation_display_post_answer |
moderation_display_post_answer | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
Forum Moderation Queue | ir.ui.view | qweb | New |
new_question |
New Post | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_answers |
post_answers | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_reply |
post_reply | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | Inherits website_profile.private_profile |
show_flag_validator |
show_flag_validator | ir.ui.view | qweb | New |
snippet_options |
Forum Snippet Options | ir.ui.view | qweb | Inherits website.snippet_options |
tag |
Forum Tags | ir.ui.view | qweb | New |
user_profile_content |
user_profile_content | ir.ui.view | qweb | Inherits website_profile.user_profile_content |
user_profile_sub_nav |
user_profile_sub_nav | ir.ui.view | qweb | Inherits website_profile.user_profile_sub_nav |
user_votes |
Forum User Votes | ir.ui.view | qweb | New |
view_forum_forum_form |
forum.forum.form | forum.forum | form | New |
view_forum_forum_list |
forum.forum.list | forum.forum | tree | New |
view_forum_post_form |
forum.post.form | forum.post | form | New |
view_forum_post_graph |
forum.post.graph | forum.post | graph | New |
view_forum_post_list |
Forum Post Pages Tree | forum.post | tree | New |
view_forum_post_search |
forum.post.search | forum.post | search | New |
view_users_form_forum |
res.users.form.forum | res.users | div | Inherits base.view_users_form |
vote |
vote | ir.ui.view | qweb | New |
website_forum.author_box |
website_forum.author_box | ir.ui.view | qweb | New |
website_forum.opt_last_post |
Show Last Post | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_list_view |
List View | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_post_count |
Show Post Count | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.question_dropdown |
website_forum.question_dropdown | ir.ui.view | qweb | New |
website_forum.user_sidebar |
website_forum.user_sidebar | ir.ui.view | qweb | New |
active
Boolean
default=True
allow_bump
Boolean
default=True
help='Check this box to display a popup for posts older than 10 days without any given answer. The popup will offer to share it on social networks. When shared, a question is bumped at the top of the forum.'
args: 'Allow Bump'
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
authorized_group_id
Many2one → res.groups
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='write_date desc'
required=True
string='Default'
args: [('create_date desc', 'Newest'), ('write_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
description
Text
translate=True
args: 'Description'
faq
Html
sanitize=True
sanitize_overridable=True
translate=html_translate
args: 'Guidelines'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all answers to comments and vice versa'
karma_comment_convert_own
Integer
default=50
string='Convert own answers to comments and vice versa'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Unlink all comments'
karma_comment_unlink_own
Integer
default=50
string='Unlink own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_edit_retag
Integer
default=75
string='Change question tags'
karma_editor
Integer
default=30
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_tag_create
Integer
default=30
string='Create new tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
last_post_id
Many2one → forum.post
compute='_compute_last_post'
args: 'forum.post'
menu_id
Many2one → website.menu
copy=False
args: 'website.menu', 'Menu'
mode
Selection
default='questions'
help='Questions mode: only one answer allowed\n Discussions mode: multiple answers allowed'
required=True
string='Mode'
args: [('questions', 'Questions (1 answer)'), ('discussions', 'Discussions (multiple answers)')]
name
Char
required=True
translate=True
args: 'Forum Name'
post_ids
One2many → forum.post
string='Posts'
args: 'forum.post', 'forum_id'
privacy
Selection
default='public'
help='Public: Forum is public\nSigned In: Forum is visible for signed in users\nSome users: Forum and their content are hidden for non members of selected group'
args: [('public', 'Public'), ('connected', 'Signed In'), ('private', 'Some users')]
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
sequence
Integer
default=1
args: 'Sequence'
teaser
Text
compute='_compute_teaser'
store=True
args: 'Teaser'
total_answers
Integer
compute='_compute_forum_statistics'
args: '# Answers'
total_favorites
Integer
compute='_compute_forum_statistics'
args: '# Favorites'
total_posts
Integer
compute='_compute_forum_statistics'
args: '# Posts'
total_views
Integer
compute='_compute_forum_statistics'
args: '# Views'
welcome_message
Html
default='<section>\n <div class="container py-5">\n <div class="row">\n <div class="col-lg-12">\n <h1 class="text-center">Welcome!</h1>\n <p class="text-400 text-center">\n This community is for professionals and enthusiasts of our products and services.\n <br/>Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.\n </p>\n </div>\n <div class="col text-center mt-3">\n <a href="#" class="js_close_intro btn btn-outline-light mr-2">Hide Intro</a>\n <a class="btn btn-light forum_register_url" href="/web/login">Register</a>\n </div>\n </div>\n </div>\n </section>'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Welcome Message'
create(self, vals_list)
get_tags_first_char(self)
go_to_website(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
bump_date
Datetime
help='Technical field allowing to bump a question. Writing on this field will trigger a write on write_date and therefore bump the post. Directly writing on write_date is currently not supported and this field is a workaround.'
readonly=True
args: 'Bumped on'
can_accept
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Accept'
can_answer
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Answer'
can_ask
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Ask'
can_close
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Close'
can_comment
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Comment'
can_comment_convert
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Downvote'
can_edit
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Edit'
can_flag
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Flag'
can_moderate
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Moderate'
can_post
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Unlink'
can_upvote
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Upvote'
can_use_full_editor
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
help='Editor Features: image and links'
can_view
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_get_child_count'
store=True
args: 'Answers'
child_ids
One2many → forum.post
domain=<expr>
string='Post Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
copy=False
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
copy=False
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
copy=False
readonly=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_get_favorite_count'
store=True
args: 'Favorite'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_get_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Convert comment to answer'
karma_close
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to close'
karma_comment
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to edit'
karma_flag
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to unlink'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
index=True
ondelete='cascade'
readonly=True
string='Question'
args: 'forum.post'
plain_content
Text
compute='_get_plain_content'
store=True
args: 'Plain Content'
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_is_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Closed'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_get_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_get_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_get_user_vote'
args: 'My Vote'
views
Integer
copy=False
default=0
readonly=True
args: 'Views'
vote_count
Integer
compute='_get_vote_count'
store=True
args: 'Total Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_id
Many2one
readonly=True
related='forum_id.website_id'
website_message_ids
One2many
domain=<expr>
website_url
Char
compute='_compute_website_url'
args: 'Website URL'
write_date
Datetime
index=True
readonly=True
args: 'Updated on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
bump(self)
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id, default=None)
create(self, vals_list)
flag(self)
go_to_website(self)
mark_as_offensive(self, reason_id)
mark_as_offensive_batch(self, key, values)
message_post(self, *, message_type='notification', **kwargs)
post_notification(self)
refuse(self)
reopen(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Selection
default='basic'
string='Reason Type'
args: [('basic', 'Basic'), ('offensive', 'Offensive')]
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
readonly=False
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
readonly=False
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals_list)
write(self, values)
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
domain=[('state', '=', 'active')]
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_id'
posts_count
Integer
compute='_get_posts_count'
store=True
args: 'Number of Posts'
create(self, vals_list)
challenge_category
Selection
ondelete={'forum': 'set default'}
selection_add=[('forum', 'Website / Forum')]
No public methods.
No new fields.
Public methods (0)No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_waiting_posts_count
Integer
compute='_get_user_waiting_post'
args: 'Waiting post'
get_gamification_redirection_data(self)
open_website_url(self)
forums_count
Integer
default=get_default_forum_count
readonly=True
configurator_get_footer_links(self)
configurator_set_menu_links(self, menu_company, module_data)
get_default_forum_count(self)
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/15.0/website_forum |
| VERSION | |
| VERSION | 1.1 |
| 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, Fabien Pinckaers, Thibault Delavallée, David Monjoie, Xavier Morel, Nicolas Lempereur, Stefan Rijnhart, Jeremy Kersten, GitHub, Yannick Tivisse, qsm-odoo, Dharmraj Jhala, Romain Derie, Xavier-Do, Victor Feyens, Julien Mougenot, Samuel Degueldre, Nasreddin Boulif (bon), Tiffany Chang (tic), Gorash, Younn Olivier, Mathieu Duckerts-Antoine, Benjamin Vray, Benoit Socias, Hubert Van de Walle (huvw), Hardik Prajapati, Guillaume (gdi), MerlinGuillaume, Sébastien Mottet (oms), Huy Le, Antoine Guenet, Florian Charlier, Nicolas Bayet, Michael Mattiello (mcm), Huy, niyasraphy, Thomas Lefebvre (thle), amdi-odoo, Tom De Caluwé, Soukéina Bojabza, Vivek Pathak, Leonardo Pavan Rocha, Astik Singh, Lopes Marc (loma) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/app/forum |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:25:29 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - auth_signup - base_setup - base - web - bus - web_tour - website_mail - website - digest - portal - web_editor - http_routing - resource - social_media - google_recaptcha - utm - website_profile - website_partner - gamification - web_kanban_gauge |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Ask questions, get answers, no distractions
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
close_post |
close_post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
default_faq |
Faq Accordion | section | New | |
display_activities |
Forum Profile Activities | ir.ui.view | qweb | New |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
edit_post | ir.ui.view | qweb | New |
faq |
Frequently Asked Questions | ir.ui.view | qweb | New |
faq_karma |
Karma | ir.ui.view | qweb | New |
forum_all |
Forum Navigation | ir.ui.view | qweb | New |
forum_all_all_entries |
forum_all_all_entries | ir.ui.view | qweb | New |
forum_all_oe_structure_forum_all_top |
Forum Navigation (oe_structure_forum_all_top) | ir.ui.view | qweb | Inherits website_forum.forum_all |
forum_filter_tag |
Filtering Forum Tag | ir.ui.view | qweb | New |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_nav_header |
forum_nav_header | ir.ui.view | qweb | New |
forum_post_options |
forum_post_options | ir.ui.view | qweb | New |
forum_post_reason_view_list |
forum.post.reason.list | forum.post.reason | tree | New |
forum_post_template_new_answer |
forum_post_template_new_answer | ir.ui.view | qweb | New |
forum_post_template_new_question |
forum_post_template_new_question | ir.ui.view | qweb | New |
forum_post_template_validation |
forum_post_template_validation | ir.ui.view | qweb | New |
forum_searchbar_input_snippet_options |
forum search bar snippet options | ir.ui.view | qweb | Inherits website.searchbar_input_snippet_options |
forum_tag_view_form |
forum.tag.form | forum.tag | form | New |
forum_tag_view_list |
forum.tag.list | forum.tag | tree | New |
forum_view_search |
forum.forum.search | forum.forum | search | New |
header |
Forum Index | ir.ui.view | qweb | New |
layout |
Forum Layout | ir.ui.view | qweb | Inherits website.layout |
link_button |
link_button | ir.ui.view | qweb | New |
moderation_display_post_answer |
moderation_display_post_answer | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
Forum Moderation Queue | ir.ui.view | qweb | New |
new_question |
new_question | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_answers |
post_answers | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_reply |
post_reply | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | Inherits website_profile.private_profile |
tag |
Forum Tags | ir.ui.view | qweb | New |
user_navbar_inherit_website_forum |
user_navbar_inherit_website_forum | 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_profile_sub_nav |
user_profile_sub_nav | ir.ui.view | qweb | Inherits website_profile.user_profile_sub_nav |
user_votes |
Forum User Votes | ir.ui.view | qweb | New |
view_forum_forum_form |
forum.forum.form | forum.forum | form | New |
view_forum_forum_list |
forum.forum.list | forum.forum | tree | New |
view_forum_post_form |
forum.post.form | forum.post | form | New |
view_forum_post_graph |
forum.post.graph | forum.post | graph | New |
view_forum_post_list |
forum.post.list | forum.post | tree | New |
view_forum_post_search |
forum.post.search | forum.post | search | New |
view_users_form_forum |
res.users.form.forum | res.users | div | Inherits base.view_users_form |
vote |
vote | ir.ui.view | qweb | New |
website_forum.author_box |
website_forum.author_box | ir.ui.view | qweb | New |
website_forum.opt_last_post |
Show Last Post | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_list_view |
List View | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_post_count |
Show Post Count | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.question_dropdown |
website_forum.question_dropdown | ir.ui.view | qweb | New |
website_forum.user_sidebar |
website_forum.user_sidebar | ir.ui.view | qweb | New |
active
Boolean
default=True
allow_bump
Boolean
default=True
help='Check this box to display a popup for posts older than 10 days without any given answer. The popup will offer to share it on social networks. When shared, a question is bumped at the top of the forum.'
args: 'Allow Bump'
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
authorized_group_id
Many2one → res.groups
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='write_date desc'
required=True
string='Default'
args: [('create_date desc', 'Newest'), ('write_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
description
Text
translate=True
args: 'Description'
faq
Html
sanitize=False
translate=html_translate
args: 'Guidelines'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all answers to comments and vice versa'
karma_comment_convert_own
Integer
default=50
string='Convert own answers to comments and vice versa'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Unlink all comments'
karma_comment_unlink_own
Integer
default=50
string='Unlink own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_edit_retag
Integer
default=75
string='Change question tags'
karma_editor
Integer
default=30
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_tag_create
Integer
default=30
string='Create new tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
last_post_id
Many2one → forum.post
compute='_compute_last_post'
args: 'forum.post'
menu_id
Many2one → website.menu
copy=False
args: 'website.menu', 'Menu'
mode
Selection
default='questions'
help='Questions mode: only one answer allowed\n Discussions mode: multiple answers allowed'
required=True
string='Mode'
args: [('questions', 'Questions (1 answer)'), ('discussions', 'Discussions (multiple answers)')]
name
Char
required=True
translate=True
args: 'Forum Name'
post_ids
One2many → forum.post
string='Posts'
args: 'forum.post', 'forum_id'
privacy
Selection
default='public'
help='Public: Forum is public\nSigned In: Forum is visible for signed in users\nSome users: Forum and their content are hidden for non members of selected group'
args: [('public', 'Public'), ('connected', 'Signed In'), ('private', 'Some users')]
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
sequence
Integer
default=1
args: 'Sequence'
teaser
Text
compute='_compute_teaser'
store=True
args: 'Teaser'
total_answers
Integer
compute='_compute_forum_statistics'
args: '# Answers'
total_favorites
Integer
compute='_compute_forum_statistics'
args: '# Favorites'
total_posts
Integer
compute='_compute_forum_statistics'
args: '# Posts'
total_views
Integer
compute='_compute_forum_statistics'
args: '# Views'
welcome_message
Html
default='<section>\n <div class="container py-5">\n <div class="row">\n <div class="col-lg-12">\n <h1 class="text-center">Welcome!</h1>\n <p class="text-400 text-center">\n This community is for professionals and enthusiasts of our products and services.\n <br/>Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.\n </p>\n </div>\n <div class="col text-center mt-3">\n <a href="#" class="js_close_intro btn btn-outline-light mr-2">Hide Intro</a>\n <a class="btn btn-light forum_register_url" href="/web/login">Register</a>\n </div>\n </div>\n </div>\n </section>'
sanitize_attributes=False
sanitize_form=False
translate=True
args: 'Welcome Message'
create(self, vals_list)
get_tags_first_char(self)
go_to_website(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
bump_date
Datetime
help='Technical field allowing to bump a question. Writing on this field will trigger a write on write_date and therefore bump the post. Directly writing on write_date is currently not supported and this field is a workaround.'
readonly=True
args: 'Bumped on'
can_accept
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Accept'
can_answer
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Answer'
can_ask
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Ask'
can_close
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Close'
can_comment
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Comment'
can_comment_convert
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Downvote'
can_edit
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Edit'
can_flag
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Flag'
can_moderate
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Moderate'
can_post
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Unlink'
can_upvote
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Upvote'
can_view
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_get_child_count'
store=True
args: 'Answers'
child_ids
One2many → forum.post
domain=<expr>
string='Post Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
copy=False
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
copy=False
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
copy=False
index=True
readonly=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_get_favorite_count'
store=True
args: 'Favorite'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_get_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Convert comment to answer'
karma_close
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to close'
karma_comment
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to edit'
karma_flag
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to unlink'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
index=True
ondelete='cascade'
readonly=True
string='Question'
args: 'forum.post'
plain_content
Text
compute='_get_plain_content'
store=True
args: 'Plain Content'
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_is_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Closed'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_get_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_get_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_get_user_vote'
args: 'My Vote'
views
Integer
copy=False
default=0
readonly=True
args: 'Views'
vote_count
Integer
compute='_get_vote_count'
store=True
args: 'Total Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_id
Many2one
readonly=True
related='forum_id.website_id'
website_message_ids
One2many
domain=<expr>
write_date
Datetime
index=True
readonly=True
args: 'Updated on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
bump(self)
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id, default=None)
create(self, vals)
flag(self)
get_access_action(self, access_uid=None)
go_to_website(self)
mark_as_offensive(self, reason_id)
mark_as_offensive_batch(self, key, values)
message_post(self, *, message_type='notification', **kwargs)
post_notification(self)
refuse(self)
reopen(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Selection
default='basic'
string='Reason Type'
args: [('basic', 'Basic'), ('offensive', 'Offensive')]
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
readonly=False
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
readonly=False
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals)
write(self, values)
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
domain=[('state', '=', 'active')]
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_id'
posts_count
Integer
compute='_get_posts_count'
store=True
args: 'Number of Posts'
create(self, vals)
challenge_category
Selection
ondelete={'forum': 'set default'}
selection_add=[('forum', 'Website / Forum')]
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_waiting_posts_count
Integer
compute='_get_user_waiting_post'
args: 'Waiting post'
get_gamification_redirection_data(self)
open_website_url(self)
forums_count
Integer
default=get_default_forum_count
readonly=True
configurator_get_footer_links(self)
configurator_set_menu_links(self, menu_company, module_data)
get_default_forum_count(self)
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_forum |
| VERSION | |
| VERSION | 1.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, Olivier Dony, Thibault Delavallée, Christophe Simonis, Nicolas Martinelli, Nicolas Lempereur, Jeremy Kersten, GitHub, Barad Mahendra, Yannick Tivisse, qsm-odoo, Dharmraj Jhala, Romain Derie, Jorge Pinna Puissant, Adrian Torres, Rémi Rahir, Xavier-Do, jvm-odoo, Victor Feyens, Paul Morelle, Sébastien Theys, fw-bot, Samuel Degueldre, Tiffany Chang (tic), fja-odoo, Younn Olivier, Mathieu Duckerts-Antoine, Kevin Baptiste, Benjamin Vray, Benoit Socias, Hardik Prajapati, Guillaume (gdi), MerlinGuillaume, Sébastien Mottet (oms), Huy Le, Florian Charlier, niyasraphy, Tom De Caluwé |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/community-builder |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:14:30 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - auth_signup - base_setup - base - web - bus - web_tour - website_mail - website - digest - portal - web_editor - http_routing - resource - social_media - website_profile - website_partner - gamification - web_kanban_gauge |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Ask questions, get answers, no distractions
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
assets_editor |
Forum Editor Assets | ir.ui.view | qweb | Inherits website.assets_editor |
assets_frontend |
assets_frontend | ir.ui.view | qweb | Inherits website.assets_frontend |
assets_tests |
Website Forum Assets Tests | ir.ui.view | qweb | Inherits web.assets_tests |
close_post |
close_post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
default_faq |
Faq Accordion | section | New | |
display_activities |
Forum Profile Activities | ir.ui.view | qweb | New |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
edit_post | ir.ui.view | qweb | New |
faq |
Frequently Asked Questions | ir.ui.view | qweb | New |
faq_karma |
Karma | ir.ui.view | qweb | New |
forum_all |
Forum Navigation | ir.ui.view | qweb | New |
forum_all_all_entries |
forum_all_all_entries | ir.ui.view | qweb | New |
forum_all_oe_structure_forum_all_top |
Forum Navigation (oe_structure_forum_all_top) | ir.ui.view | qweb | Inherits website_forum.forum_all |
forum_filter_tag |
Filtering Forum Tag | ir.ui.view | qweb | New |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_nav_header |
forum_nav_header | ir.ui.view | qweb | New |
forum_post_options |
forum_post_options | ir.ui.view | qweb | New |
forum_post_reason_view_list |
forum.post.reason.list | forum.post.reason | tree | New |
forum_post_template_new_answer |
forum_post_template_new_answer | ir.ui.view | qweb | New |
forum_post_template_new_question |
forum_post_template_new_question | ir.ui.view | qweb | New |
forum_post_template_validation |
forum_post_template_validation | ir.ui.view | qweb | New |
forum_tag_view_form |
forum.tag.form | forum.tag | form | New |
forum_tag_view_list |
forum.tag.list | forum.tag | tree | New |
forum_view_search |
forum.forum.search | forum.forum | search | New |
header |
Forum Index | ir.ui.view | qweb | New |
layout |
Forum Layout | ir.ui.view | qweb | Inherits website.layout |
link_button |
link_button | ir.ui.view | qweb | New |
moderation_display_post_answer |
moderation_display_post_answer | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
Forum Moderation Queue | ir.ui.view | qweb | New |
new_question |
new_question | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_answers |
post_answers | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_reply |
post_reply | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | Inherits website_profile.private_profile |
tag |
Forum Tags | ir.ui.view | qweb | New |
user_navbar_inherit_website_forum |
user_navbar_inherit_website_forum | 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_profile_sub_nav |
user_profile_sub_nav | ir.ui.view | qweb | Inherits website_profile.user_profile_sub_nav |
user_votes |
Forum User Votes | ir.ui.view | qweb | New |
view_forum_forum_form |
forum.forum.form | forum.forum | form | New |
view_forum_forum_list |
forum.forum.list | forum.forum | tree | New |
view_forum_post_form |
forum.post.form | forum.post | form | New |
view_forum_post_graph |
forum.post.graph | forum.post | graph | New |
view_forum_post_list |
forum.post.list | forum.post | tree | New |
view_forum_post_search |
forum.post.search | forum.post | search | New |
view_users_form_forum |
res.users.form.forum | res.users | div | Inherits base.view_users_form |
vote |
vote | ir.ui.view | qweb | New |
website_forum.author_box |
website_forum.author_box | ir.ui.view | qweb | New |
website_forum.opt_last_post |
Show Last Post | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_list_view |
List View | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.opt_post_count |
Show Post Count | ir.ui.view | qweb | Inherits website_forum.forum_all |
website_forum.question_dropdown |
website_forum.question_dropdown | ir.ui.view | qweb | New |
website_forum.user_sidebar |
website_forum.user_sidebar | ir.ui.view | qweb | New |
active
Boolean
default=True
allow_bump
Boolean
default=True
help='Check this box to display a popup for posts older than 10 days without any given answer. The popup will offer to share it on social networks. When shared, a question is bumped at the top of the forum.'
args: 'Allow Bump'
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
authorized_group_id
Many2one → res.groups
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='write_date desc'
required=True
string='Default'
args: [('create_date desc', 'Newest'), ('write_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
description
Text
translate=True
args: 'Description'
faq
Html
sanitize=False
translate=html_translate
args: 'Guidelines'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all answers to comments and vice versa'
karma_comment_convert_own
Integer
default=50
string='Convert own answers to comments and vice versa'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Unlink all comments'
karma_comment_unlink_own
Integer
default=50
string='Unlink own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_edit_retag
Integer
default=75
string='Change question tags'
karma_editor
Integer
default=30
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_tag_create
Integer
default=30
string='Create new tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
last_post_id
Many2one → forum.post
compute='_compute_last_post'
args: 'forum.post'
menu_id
Many2one → website.menu
copy=False
args: 'website.menu', 'Menu'
mode
Selection
default='questions'
help='Questions mode: only one answer allowed\n Discussions mode: multiple answers allowed'
required=True
string='Mode'
args: [('questions', 'Questions (1 answer)'), ('discussions', 'Discussions (multiple answers)')]
name
Char
required=True
translate=True
args: 'Forum Name'
post_ids
One2many → forum.post
string='Posts'
args: 'forum.post', 'forum_id'
privacy
Selection
default='public'
help='Public: Forum is public\nSigned In: Forum is visible for signed in users\nSome users: Forum and their content are hidden for non members of selected group'
args: [('public', 'Public'), ('connected', 'Signed In'), ('private', 'Some users')]
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
sequence
Integer
default=1
args: 'Sequence'
teaser
Text
compute='_compute_teaser'
store=True
args: 'Teaser'
total_answers
Integer
compute='_compute_forum_statistics'
args: '# Answers'
total_favorites
Integer
compute='_compute_forum_statistics'
args: '# Favorites'
total_posts
Integer
compute='_compute_forum_statistics'
args: '# Posts'
total_views
Integer
compute='_compute_forum_statistics'
args: '# Views'
welcome_message
Html
default='<section>\n <div class="container py-5">\n <div class="row">\n <div class="col-lg-12">\n <h1 class="text-center">Welcome!</h1>\n <p class="text-400 text-center">\n This community is for professionals and enthusiasts of our products and services.\n <br/>Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.\n </p>\n </div>\n <div class="col text-center mt-3">\n <a href="#" class="js_close_intro btn btn-outline-light mr-2">Hide Intro</a>\n <a class="btn btn-light forum_register_url" href="/web/login">Register</a>\n </div>\n </div>\n </div>\n </section>'
translate=True
args: 'Welcome Message'
create(self, values)
get_tags_first_char(self)
go_to_website(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
bump_date
Datetime
help='Technical field allowing to bump a question. Writing on this field will trigger a write on write_date and therefore bump the post. Directly writing on write_date is currently not supported and this field is a workaround.'
readonly=True
args: 'Bumped on'
can_accept
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Accept'
can_answer
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Answer'
can_ask
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Ask'
can_close
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Close'
can_comment
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Comment'
can_comment_convert
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Downvote'
can_edit
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Edit'
can_flag
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Flag'
can_moderate
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Moderate'
can_post
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Unlink'
can_upvote
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Upvote'
can_view
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_get_child_count'
store=True
args: 'Answers'
child_ids
One2many → forum.post
domain=<expr>
string='Post Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
copy=False
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
copy=False
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
copy=False
index=True
readonly=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_get_favorite_count'
store=True
args: 'Favorite'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_get_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Convert comment to answer'
karma_close
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to close'
karma_comment
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to edit'
karma_flag
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to unlink'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
index=True
ondelete='cascade'
readonly=True
string='Question'
args: 'forum.post'
plain_content
Text
compute='_get_plain_content'
store=True
args: 'Plain Content'
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_is_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Closed'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_get_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_get_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_get_user_vote'
args: 'My Vote'
views
Integer
copy=False
default=0
readonly=True
args: 'Views'
vote_count
Integer
compute='_get_vote_count'
store=True
args: 'Total Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_id
Many2one
readonly=True
related='forum_id.website_id'
website_message_ids
One2many
domain=<expr>
write_date
Datetime
index=True
readonly=True
args: 'Updated on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
bump(self)
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id, default=None)
create(self, vals)
flag(self)
get_access_action(self, access_uid=None)
go_to_website(self)
mark_as_offensive(self, reason_id)
mark_as_offensive_batch(self, key, values)
message_post(self, *, message_type='notification', **kwargs)
post_notification(self)
refuse(self)
reopen(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Selection
default='basic'
string='Reason Type'
args: [('basic', 'Basic'), ('offensive', 'Offensive')]
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
readonly=False
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
readonly=False
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals)
write(self, values)
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
domain=[('state', '=', 'active')]
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_id'
posts_count
Integer
compute='_get_posts_count'
store=True
args: 'Number of Posts'
create(self, vals)
challenge_category
Selection
ondelete={'forum': 'set default'}
selection_add=[('forum', 'Website / Forum')]
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_waiting_posts_count
Integer
compute='_get_user_waiting_post'
args: 'Waiting post'
get_gamification_redirection_data(self)
open_website_url(self)
forums_count
Integer
default=get_default_forum_count
readonly=True
get_default_forum_count(self)
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_forum |
| VERSION | |
| VERSION | 1.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, Christophe Matthieu, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, David Monjoie, Xavier Morel, Goffin Simon, Mohammed Shekha, Nicolas Martinelli, Nicolas Lempereur, Aaron Bohy, Jeremy Kersten, GitHub, Damien Bouvy, Yannick Tivisse, qsm-odoo, Dharmraj Jhala, Romain Derie, Jorge Pinna Puissant, Nans Lefebvre, Toufik Ben Jaa, Adrian Torres, Rémi Rahir, Xavier-Do, jvm-odoo, mgh-odoo, Paul Morelle, Sébastien Theys, David Beguin, Lucas Lefèvre, fja-odoo, ThanhDodeurOdoo, Younn Olivier, Parth Choksi, Yenthe666, Kevin Baptiste, Benjamin Vray, Hardik Prajapati, MerlinGuillaume, Andrea Ulliana, Huy |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/community-builder |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:06:43 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - auth_signup - base_setup - base - web - bus - web_tour - website_mail - website - web_editor - http_routing - portal - social_media - website_profile - website_partner - gamification - web_kanban_gauge |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Ask questions, get answers, no distractions
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
assets_editor |
Forum Editor Assets | ir.ui.view | qweb | Inherits website.assets_editor |
assets_frontend |
assets_frontend | ir.ui.view | qweb | Inherits website.assets_frontend |
assets_tests |
Website Forum Assets Tests | ir.ui.view | qweb | Inherits web.assets_tests |
close_post |
close_post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
display_activities |
Forum Profile Activities | ir.ui.view | qweb | New |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
edit_post | ir.ui.view | qweb | New |
faq |
Frequently Asked Questions | ir.ui.view | qweb | New |
forum_all |
Forum Navigation | ir.ui.view | qweb | New |
forum_all_all_entries |
forum_all_all_entries | ir.ui.view | qweb | New |
forum_all_oe_structure_forum_all_top |
Forum Navigation (oe_structure_forum_all_top) | ir.ui.view | qweb | Inherits website_forum.forum_all |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_nav_header |
forum_nav_header | ir.ui.view | qweb | New |
forum_post_template_new_answer |
forum_post_template_new_answer | ir.ui.view | qweb | New |
forum_post_template_new_question |
forum_post_template_new_question | ir.ui.view | qweb | New |
forum_post_template_validation |
forum_post_template_validation | ir.ui.view | qweb | New |
forum_tag_view_form |
forum.tag.form | forum.tag | form | New |
forum_tag_view_list |
forum.tag.list | forum.tag | tree | New |
forum_view_search |
forum.forum.search | forum.forum | search | New |
header |
Forum Index | ir.ui.view | qweb | New |
layout |
Forum Layout | ir.ui.view | qweb | Inherits website.layout |
link_button |
link_button | ir.ui.view | qweb | New |
moderation_display_post_answer |
moderation_display_post_answer | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
Forum Moderation Queue | ir.ui.view | qweb | New |
new_question |
new_question | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_answers |
post_answers | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_reply |
post_reply | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | Inherits website_profile.private_profile |
tag |
Forum Tags | ir.ui.view | qweb | New |
user_navbar_inherit_website_forum |
user_navbar_inherit_website_forum | 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_profile_sub_nav |
user_profile_sub_nav | ir.ui.view | qweb | Inherits website_profile.user_profile_sub_nav |
user_votes |
Forum User Votes | ir.ui.view | qweb | New |
view_forum_forum_form |
forum.forum.form | forum.forum | form | New |
view_forum_forum_list |
forum.forum.list | forum.forum | tree | New |
view_forum_post_form |
forum.post.form | forum.post | form | New |
view_forum_post_graph |
forum.post.graph | forum.post | graph | New |
view_forum_post_list |
forum.post.list | forum.post | tree | New |
view_forum_post_search |
forum.post.search | forum.post | search | New |
view_users_form_forum |
res.users.form.forum | res.users | div | Inherits base.view_users_form |
vote |
vote | ir.ui.view | qweb | New |
website_forum.author_box |
website_forum.author_box | ir.ui.view | qweb | New |
website_forum.question_dropdown |
website_forum.question_dropdown | ir.ui.view | qweb | New |
website_forum.user_sidebar |
website_forum.user_sidebar | ir.ui.view | qweb | New |
active
Boolean
default=True
allow_bump
Boolean
default=True
help='Check this box to display a popup for posts older than 10 days without any given answer. The popup will offer to share it on social networks. When shared, a question is bumped at the top of the forum.'
args: 'Allow Bump'
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='write_date desc'
required=True
string='Default'
args: [('create_date desc', 'Newest'), ('write_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
description
Text
translate=True
args: 'Description'
faq
Html
default=_get_default_faq
sanitize=False
translate=html_translate
args: 'Guidelines'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all answers to comments and vice versa'
karma_comment_convert_own
Integer
default=50
string='Convert own answers to comments and vice versa'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Unlink all comments'
karma_comment_unlink_own
Integer
default=50
string='Unlink own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_edit_retag
Integer
default=75
string='Change question tags'
karma_editor
Integer
default=30
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_tag_create
Integer
default=30
string='Create new tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
mode
Selection
default='questions'
help='Questions mode: only one answer allowed\n Discussions mode: multiple answers allowed'
required=True
string='Forum Mode'
args: [('questions', 'Questions'), ('discussions', 'Discussions')]
name
Char
required=True
translate=True
args: 'Forum Name'
post_ids
One2many → forum.post
string='Posts'
args: 'forum.post', 'forum_id'
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
sequence
Integer
default=1
args: 'Sequence'
total_answers
Integer
compute='_compute_forum_statistics'
args: 'Answers Count'
total_favorites
Integer
compute='_compute_forum_statistics'
args: 'Favorites Count'
total_posts
Integer
compute='_compute_forum_statistics'
args: 'Post Count'
total_views
Integer
compute='_compute_forum_statistics'
args: 'Views Count'
welcome_message
Html
default='<section>\n <div class="container py-5">\n <div class="row">\n <div class="col-lg-12">\n <h1 class="text-center">Welcome!</h1>\n <p class="text-400 text-center">\n This community is for professionals and enthusiasts of our products and services.\n <br/>Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.\n </p>\n </div>\n <div class="col text-center mt-3">\n <a href="#" class="js_close_intro btn btn-outline-light mr-2">Hide Intro</a>\n <a class="btn btn-light forum_register_url" href="/web/login">Register</a>\n </div>\n </div>\n </div>\n </section>'
translate=True
args: 'Welcome Message'
create(self, values)
get_tags_first_char(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
bump_date
Datetime
help='Technical field allowing to bump a question. Writing on this field will trigger a write on write_date and therefore bump the post. Directly writing on write_date is currently not supported and this field is a workaround.'
readonly=True
args: 'Bumped on'
can_accept
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Accept'
can_answer
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Answer'
can_ask
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Ask'
can_close
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Close'
can_comment
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Comment'
can_comment_convert
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Downvote'
can_edit
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Edit'
can_flag
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Flag'
can_moderate
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Moderate'
can_post
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Unlink'
can_upvote
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Can Upvote'
can_view
Boolean
compute='_get_post_karma_rights'
compute_sudo=False
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_get_child_count'
store=True
args: 'Number of answers'
child_ids
One2many → forum.post
string='Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
index=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_get_favorite_count'
store=True
args: 'Favorite Count'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_get_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Convert comment to answer'
karma_close
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to close'
karma_comment
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to edit'
karma_flag
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_get_post_karma_rights'
compute_sudo=False
args: 'Karma to unlink'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
ondelete='cascade'
string='Question'
args: 'forum.post'
plain_content
Text
compute='_get_plain_content'
store=True
args: 'Plain Content'
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_is_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Close'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_get_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_get_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_get_user_vote'
args: 'My Vote'
views
Integer
default=0
args: 'Number of Views'
vote_count
Integer
compute='_get_vote_count'
store=True
args: 'Total Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_id
Many2one
readonly=True
related='forum_id.website_id'
website_message_ids
One2many
domain=<expr>
write_date
Datetime
index=True
readonly=True
args: 'Update on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
bump(self)
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id, default=None)
create(self, vals)
flag(self)
get_access_action(self, access_uid=None)
get_mail_message_access(self, res_ids, operation, model_name=None)
mark_as_offensive(self, reason_id)
mark_as_offensive_batch(self, key, values)
message_post(self, *, message_type='notification', **kwargs)
post_notification(self)
refuse(self)
reopen(self)
set_viewed(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Char
string='Reason Type'
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
readonly=False
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
readonly=False
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals)
write(self, values)
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
domain=[('state', '=', 'active')]
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_id'
posts_count
Integer
compute='_get_posts_count'
store=True
args: 'Number of Posts'
create(self, vals)
category
Selection
selection_add=[('forum', 'Website / Forum')]
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_waiting_posts_count
Integer
compute='_get_user_waiting_post'
args: 'Waiting post'
get_gamification_redirection_data(self)
open_website_url(self)
forums_count
Integer
compute=_compute_field_forums_count
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_forum |
| 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, Thibault Delavallée, Christophe Simonis, Xavier Morel, Nicolas Martinelli, Nicolas Lempereur, Jeremy Kersten, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Romain Derie, Christophe Monniez, Adrian Torres, Xavier-Do, David Tran, Sébastien Theys, Quentin Smetz (qsm), Younn Olivier, Yenthe666, Benjamin Vray |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/community-builder |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:57:02 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - auth_signup - base_setup - base - web - bus - web_tour - gamification - web_kanban_gauge - website_mail - website - web_editor - http_routing - portal - social_media - website_partner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Ask questions, get answers, no distractions
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
assets_editor |
Forum Editor Assets | ir.ui.view | qweb | Inherits website.assets_editor |
assets_frontend |
assets_frontend | ir.ui.view | qweb | Inherits website.assets_frontend |
badge |
Forum Badges | ir.ui.view | qweb | New |
badge_form_view_forum |
forum.badge_form_view | gamification.badge | field | Inherits gamification.badge_form_view |
close_post |
close_post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
edit_post | ir.ui.view | qweb | New |
edit_profile |
Forum Edit Profile | ir.ui.view | qweb | New |
edit_welcome_message |
edit_welcome_message | ir.ui.view | qweb | New |
faq |
Frequently Asked Questions | ir.ui.view | qweb | New |
forum_all |
Our Forums | ir.ui.view | qweb | New |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_post_template_new_answer |
forum_post_template_new_answer | ir.ui.view | qweb | New |
forum_post_template_new_question |
forum_post_template_new_question | ir.ui.view | qweb | New |
forum_post_template_validation |
forum_post_template_validation | ir.ui.view | qweb | New |
forum_tag_view_form |
forum.tag.form | forum.tag | form | New |
forum_tag_view_list |
forum.tag.list | forum.tag | tree | New |
forum_user_tooltip |
forum_user_tooltip | ir.ui.view | qweb | New |
forum_view_search |
forum.forum.search | forum.forum | search | New |
header |
Forum Index | ir.ui.view | qweb | New |
layout |
Forum Layout | ir.ui.view | qweb | Inherits website.layout |
link_button |
link_button | ir.ui.view | qweb | New |
moderation_display_post_answer |
moderation_display_post_answer | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
Forum Moderation Queue | ir.ui.view | qweb | New |
new_discussion |
new_discussion | ir.ui.view | qweb | New |
new_link |
new_link | ir.ui.view | qweb | New |
new_question |
new_question | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_answers |
post_answers | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_reply |
post_reply | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | New |
res_users_view_form_preference |
res.users.form.preference.forum | res.users | data | Inherits base.view_users_form_simple_modif |
tag |
Forum Tags | ir.ui.view | qweb | New |
user_badges |
user_badges | ir.ui.view | qweb | New |
user_detail_full |
user_detail_full | ir.ui.view | qweb | New |
user_navbar_inherit_website_forum |
user_navbar_inherit_website_forum | ir.ui.view | qweb | Inherits website.user_navbar |
user_votes |
user_votes | ir.ui.view | qweb | New |
users |
users | ir.ui.view | qweb | New |
view_forum_forum_form |
forum.forum.form | forum.forum | form | New |
view_forum_forum_list |
forum.forum.list | forum.forum | tree | New |
view_forum_post_form |
forum.post.form | forum.post | form | New |
view_forum_post_graph |
forum.post.graph | forum.post | graph | New |
view_forum_post_list |
forum.post.list | forum.post | tree | New |
view_forum_post_search |
forum.post.search | forum.post | search | New |
view_users_form_forum |
res.users.form.forum | res.users | field | Inherits base.view_users_form |
vote |
vote | ir.ui.view | qweb | New |
active
Boolean
default=True
allow_bump
Boolean
default=True
help='Check this box to display a popup for posts older than 10 days without any given answer. The popup will offer to share it on social networks. When shared, a question is bumped at the top of the forum.'
args: 'Allow Bump'
allow_discussion
Boolean
default=True
args: 'Discussions'
allow_link
Boolean
default=True
help='When clicking on the post, it redirects to an external link'
args: 'Links'
allow_question
Boolean
default=True
help='Users can answer only once per question. Contributors can edit answers and mark the right ones.'
args: 'Questions'
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='write_date desc'
required=True
string='Default Order'
args: [('create_date desc', 'Newest'), ('write_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
default_post_type
Selection
default='question'
required=True
string='Default Post'
args: [('question', 'Question'), ('discussion', 'Discussion'), ('link', 'Link')]
description
Text
default=<expr>
translate=True
args: 'Description'
faq
Html
default=_get_default_faq
translate=True
args: 'Guidelines'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all answers to comments and vice versa'
karma_comment_convert_own
Integer
default=50
string='Convert own answers to comments and vice versa'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Unlink all comments'
karma_comment_unlink_own
Integer
default=50
string='Unlink own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_edit_retag
Integer
default=75
oldname='karma_retag'
string='Change question tags'
karma_editor
Integer
default=30
oldname='karma_editor_link_files'
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_tag_create
Integer
default=30
string='Create new tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
name
Char
required=True
translate=True
args: 'Forum Name'
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
welcome_message
Html
default='<section class="bg-info shadow">\n <div class="container py-5">\n <div class="row">\n <div class="col-lg-12">\n <h1 class="text-center">Welcome!</h1>\n <p class="text-400 text-center">\n This community is for professionals and enthusiasts of our products and services.\n <br/>Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.\n </p>\n </div>\n <div class="col text-center mt-3">\n <a href="#" class="js_close_intro btn btn-outline-light">Hide Intro</a>\n <a class="btn btn-light forum_register_url" href="/web/login">Register</a>\n </div>\n </div>\n </div>\n </section>'
translate=True
args: 'Welcome Message'
create(self, values)
get_tags_first_char(self)
init(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
bump_date
Datetime
help='Technical field allowing to bump a question. Writing on this field will trigger a write on write_date and therefore bump the post. Directly writing on write_date is currently not supported and this field is a workaround.'
readonly=True
args: 'Bumped on'
can_accept
Boolean
compute='_get_post_karma_rights'
args: 'Can Accept'
can_answer
Boolean
compute='_get_post_karma_rights'
args: 'Can Answer'
can_ask
Boolean
compute='_get_post_karma_rights'
args: 'Can Ask'
can_close
Boolean
compute='_get_post_karma_rights'
args: 'Can Close'
can_comment
Boolean
compute='_get_post_karma_rights'
args: 'Can Comment'
can_comment_convert
Boolean
compute='_get_post_karma_rights'
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_get_post_karma_rights'
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_get_post_karma_rights'
args: 'Can Downvote'
can_edit
Boolean
compute='_get_post_karma_rights'
args: 'Can Edit'
can_flag
Boolean
compute='_get_post_karma_rights'
args: 'Can Flag'
can_moderate
Boolean
compute='_get_post_karma_rights'
args: 'Can Moderate'
can_post
Boolean
compute='_get_post_karma_rights'
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_get_post_karma_rights'
args: 'Can Unlink'
can_upvote
Boolean
compute='_get_post_karma_rights'
args: 'Can Upvote'
can_view
Boolean
compute='_get_post_karma_rights'
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_get_child_count'
store=True
args: 'Number of answers'
child_ids
One2many → forum.post
string='Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
index=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
content_link
Char
help='URL of Link Articles'
args: 'URL'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_get_favorite_count'
store=True
args: 'Favorite Count'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_get_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_get_post_karma_rights'
args: 'Convert comment to answer'
karma_close
Integer
compute='_get_post_karma_rights'
args: 'Karma to close'
karma_comment
Integer
compute='_get_post_karma_rights'
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_get_post_karma_rights'
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_get_post_karma_rights'
args: 'Karma to edit'
karma_flag
Integer
compute='_get_post_karma_rights'
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_get_post_karma_rights'
args: 'Karma to unlink'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
ondelete='cascade'
string='Question'
args: 'forum.post'
plain_content
Text
compute='_get_plain_content'
store=True
args: 'Plain Content'
post_type
Selection
default='question'
required=True
string='Type'
args: [('question', 'Question'), ('link', 'Article'), ('discussion', 'Discussion')]
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_is_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Close'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_get_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_get_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_get_user_vote'
args: 'My Vote'
views
Integer
default=0
args: 'Number of Views'
vote_count
Integer
compute='_get_vote_count'
store=True
args: 'Total Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_id
Many2one
readonly=True
related='forum_id.website_id'
website_message_ids
One2many
domain=<expr>
write_date
Datetime
index=True
readonly=True
args: 'Update on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
bump(self)
check_mail_message_access(self, res_ids, operation, model_name=None)
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id, default=None)
create(self, vals)
flag(self)
get_access_action(self, access_uid=None)
mark_as_offensive(self, reason_id)
message_post(self, message_type='notification', **kwargs)
name_get(self)
post_notification(self)
refuse(self)
reopen(self)
set_viewed(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Char
string='Reason Type'
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
readonly=False
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
readonly=False
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals)
write(self, values)
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
domain=[('state', '=', 'active')]
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_id'
posts_count
Integer
compute='_get_posts_count'
store=True
args: 'Number of Posts'
create(self, vals)
level
Selection
string='Forum Badge Level'
args: [('bronze', 'bronze'), ('silver', 'silver'), ('gold', 'gold')]
No public methods.
level
Selection
readonly=False
related='badge_id.level'
store=True
string='Forum Badge Level'
args: [('bronze', 'bronze'), ('silver', 'silver'), ('gold', 'gold')]
No public methods.
category
Selection
selection_add=[('forum', 'Website / Forum')]
No public methods.
badge_ids
One2many → gamification.badge.user
copy=False
string='Badges'
args: 'gamification.badge.user', 'user_id'
bronze_badge
Integer
compute='_get_user_badge_level'
args: 'Bronze badges count'
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_waiting_posts_count
Integer
compute='_get_user_waiting_post'
args: 'Waiting post'
gold_badge
Integer
compute='_get_user_badge_level'
args: 'Gold badges count'
karma
Integer
default=0
args: 'Karma'
silver_badge
Integer
compute='_get_user_badge_level'
args: 'Silver badges count'
add_karma(self, karma)
open_website_url(self)
process_forum_validation_token(self, token, email, forum_id=None, context=None)
send_forum_validation_email(self, forum_id=None)
| 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_forum |
| 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, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Jérome Maes, Aaron Bohy, Jeremy Kersten, GitHub, Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, fwi-odoo, Sébastien Theys |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/community-builder |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:53:43 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - auth_signup - base_setup - base - web - bus - web_tour - gamification - web_kanban_gauge - website_mail - website - web_editor - web_planner - http_routing - portal - website_partner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Ask questions, get answers, no distractions
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
assets_editor |
Forum Editor Assets | ir.ui.view | qweb | Inherits website.assets_editor |
assets_frontend |
Forum Assets | ir.ui.view | qweb | Inherits website.assets_frontend |
badge |
badge | ir.ui.view | qweb | New |
close_post |
close_post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
content_new_forum |
content_new_forum | ir.ui.view | qweb | Inherits website.user_navbar |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
edit_post | ir.ui.view | qweb | New |
edit_profile |
edit_profile | ir.ui.view | qweb | New |
edit_welcome_message |
edit_welcome_message | ir.ui.view | qweb | New |
faq |
faq | ir.ui.view | qweb | New |
forum_all |
forum_all | ir.ui.view | qweb | New |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_post_template_new_answer |
forum_post_template_new_answer | ir.ui.view | qweb | New |
forum_post_template_new_question |
forum_post_template_new_question | ir.ui.view | qweb | New |
forum_post_template_validation |
forum_post_template_validation | ir.ui.view | qweb | New |
forum_tag_view_form |
forum.tag.form | forum.tag | form | New |
forum_tag_view_list |
forum.tag.list | forum.tag | tree | New |
forum_user_tooltip |
forum_user_tooltip | ir.ui.view | qweb | New |
forum_view_search |
forum.forum.search | forum.forum | search | New |
header |
Forum Index | ir.ui.view | qweb | New |
header_footer_custom |
Footer Questions Link | ir.ui.view | qweb | Inherits website.footer_default |
layout |
Forum Layout | ir.ui.view | qweb | Inherits website.layout |
link_button |
link_button | ir.ui.view | qweb | New |
moderation_display_post_answer |
moderation_display_post_answer | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
moderation_queue | ir.ui.view | qweb | New |
new_discussion |
new_discussion | ir.ui.view | qweb | New |
new_link |
new_link | ir.ui.view | qweb | New |
new_question |
new_question | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_answers |
post_answers | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_reply |
post_reply | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | New |
res_users_view_form_preference |
res.users.form.preference.forum | res.users | data | Inherits base.view_users_form_simple_modif |
tag |
tag | ir.ui.view | qweb | New |
user_badges |
user_badges | ir.ui.view | qweb | New |
user_detail_full |
user_detail_full | ir.ui.view | qweb | New |
user_votes |
user_votes | ir.ui.view | qweb | New |
users |
users | ir.ui.view | qweb | New |
view_forum_forum_form |
forum.forum.form | forum.forum | form | New |
view_forum_forum_list |
forum.forum.list | forum.forum | tree | New |
view_forum_post_form |
forum.post.form | forum.post | form | New |
view_forum_post_graph |
forum.post.graph | forum.post | graph | New |
view_forum_post_list |
forum.post.list | forum.post | tree | New |
view_forum_post_search |
forum.post.search | forum.post | search | New |
view_users_form_forum |
res.users.form.forum | res.users | field | Inherits base.view_users_form |
vote |
vote | ir.ui.view | qweb | New |
active
Boolean
default=True
allow_bump
Boolean
default=True
help='Check this box to display a popup for posts older than 10 days without any given answer. The popup will offer to share it on social networks. When shared, a question is bumped at the top of the forum.'
args: 'Allow Bump'
allow_discussion
Boolean
default=True
args: 'Discussions'
allow_link
Boolean
default=True
help='When clicking on the post, it redirects to an external link'
args: 'Links'
allow_question
Boolean
default=True
help='Users can answer only once per question. Contributors can edit answers and mark the right ones.'
args: 'Questions'
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='write_date desc'
required=True
string='Default Order'
args: [('create_date desc', 'Newest'), ('write_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
default_post_type
Selection
default='question'
required=True
string='Default Post'
args: [('question', 'Question'), ('discussion', 'Discussion'), ('link', 'Link')]
description
Text
default=<expr>
translate=True
args: 'Description'
faq
Html
default=_get_default_faq
translate=True
args: 'Guidelines'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all answers to comments and vice versa'
karma_comment_convert_own
Integer
default=50
string='Convert own answers to comments and vice versa'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Unlink all comments'
karma_comment_unlink_own
Integer
default=50
string='Unlink own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_edit_retag
Integer
default=75
oldname='karma_retag'
string='Change question tags'
karma_editor
Integer
default=30
oldname='karma_editor_link_files'
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_tag_create
Integer
default=30
string='Create new tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
name
Char
required=True
translate=True
args: 'Forum Name'
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
welcome_message
Html
default='<section class="bg-info" style="height: 168px;"><div class="container">\n <div class="row">\n <div class="col-md-12">\n <h1 class="text-center" style="text-align: left;">Welcome!</h1>\n <p class="text-muted text-center" style="text-align: left;">This community is for professionals and enthusiasts of our products and services. Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.</p>\n </div>\n <div class="col-md-12">\n <a href="#" class="js_close_intro">Hide Intro</a> <a class="btn btn-primary forum_register_url" href="/web/login">Register</a> </div>\n </div>\n </div>\n </section>'
translate=True
args: 'Welcome Message'
create(self, values)
get_tags_first_char(self)
init(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
bump_date
Datetime
help='Technical field allowing to bump a question. Writing on this field will trigger a write on write_date and therefore bump the post. Directly writing on write_date is currently not supported and this field is a workaround.'
readonly=True
args: 'Bumped on'
can_accept
Boolean
compute='_get_post_karma_rights'
args: 'Can Accept'
can_answer
Boolean
compute='_get_post_karma_rights'
args: 'Can Answer'
can_ask
Boolean
compute='_get_post_karma_rights'
args: 'Can Ask'
can_close
Boolean
compute='_get_post_karma_rights'
args: 'Can Close'
can_comment
Boolean
compute='_get_post_karma_rights'
args: 'Can Comment'
can_comment_convert
Boolean
compute='_get_post_karma_rights'
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_get_post_karma_rights'
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_get_post_karma_rights'
args: 'Can Downvote'
can_edit
Boolean
compute='_get_post_karma_rights'
args: 'Can Edit'
can_flag
Boolean
compute='_get_post_karma_rights'
args: 'Can Flag'
can_moderate
Boolean
compute='_get_post_karma_rights'
args: 'Can Moderate'
can_post
Boolean
compute='_get_post_karma_rights'
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_get_post_karma_rights'
args: 'Can Unlink'
can_upvote
Boolean
compute='_get_post_karma_rights'
args: 'Can Upvote'
can_view
Boolean
compute='_get_post_karma_rights'
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_get_child_count'
store=True
args: 'Number of answers'
child_ids
One2many → forum.post
string='Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
index=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
content_link
Char
help='URL of Link Articles'
args: 'URL'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_get_favorite_count'
store=True
args: 'Favorite Count'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_get_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_get_post_karma_rights'
args: 'Convert comment to answer'
karma_close
Integer
compute='_get_post_karma_rights'
args: 'Karma to close'
karma_comment
Integer
compute='_get_post_karma_rights'
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_get_post_karma_rights'
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_get_post_karma_rights'
args: 'Karma to edit'
karma_flag
Integer
compute='_get_post_karma_rights'
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_get_post_karma_rights'
args: 'Karma to unlink'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
ondelete='cascade'
string='Question'
args: 'forum.post'
plain_content
Text
compute='_get_plain_content'
store=True
args: 'Plain Content'
post_type
Selection
default='question'
required=True
string='Type'
args: [('question', 'Question'), ('link', 'Article'), ('discussion', 'Discussion')]
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_is_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Close'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_get_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_get_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_get_user_vote'
args: 'My Vote'
views
Integer
default=0
args: 'Number of Views'
vote_count
Integer
compute='_get_vote_count'
store=True
args: 'Total Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_message_ids
One2many
domain=<expr>
write_date
Datetime
index=True
readonly=True
args: 'Update on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
bump(self)
check_mail_message_access(self, res_ids, operation, model_name=None)
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id, default=None)
create(self, vals)
flag(self)
get_access_action(self, access_uid=None)
mark_as_offensive(self, reason_id)
message_get_message_notify_values(self, message, message_values)
message_post(self, message_type='notification', subtype=None, **kwargs)
name_get(self)
post_notification(self)
refuse(self)
reopen(self)
set_viewed(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Char
string='Reason Type'
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals)
write(self, values)
create_uid
Many2one → res.users
readonly=True
string='Created by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
domain=[('state', '=', 'active')]
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_id'
posts_count
Integer
compute='_get_posts_count'
store=True
args: 'Number of Posts'
create(self, vals)
level
Selection
string='Forum Badge Level'
args: [('bronze', 'bronze'), ('silver', 'silver'), ('gold', 'gold')]
No public methods.
level
Selection
related='badge_id.level'
store=True
string='Forum Badge Level'
args: [('bronze', 'bronze'), ('silver', 'silver'), ('gold', 'gold')]
No public methods.
category
Selection
selection_add=[('forum', 'Website / Forum')]
No public methods.
badge_ids
One2many → gamification.badge.user
copy=False
string='Badges'
args: 'gamification.badge.user', 'user_id'
bronze_badge
Integer
compute='_get_user_badge_level'
args: 'Bronze badges count'
create_date
Datetime
copy=False
index=True
readonly=True
args: 'Create Date'
forum_waiting_posts_count
Integer
compute='_get_user_waiting_post'
args: 'Waiting post'
gold_badge
Integer
compute='_get_user_badge_level'
args: 'Gold badges count'
karma
Integer
default=0
args: 'Karma'
silver_badge
Integer
compute='_get_user_badge_level'
args: 'Silver badges count'
add_karma(self, karma)
open_website_url(self)
process_forum_validation_token(self, token, email, forum_id=None, context=None)
send_forum_validation_email(self, forum_id=None)
| 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_forum |
| 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, Christophe Simonis, Xavier Morel, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, qdp-odoo, Géry Debongnie, Jeremy Kersten, GitHub, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Martin Geubelle, Denis Vermylen (dve), len-odoo |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/community-builder |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:50:48 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - auth_signup - base_setup - base - web_kanban - web - bus - web_tour - gamification - web_kanban_gauge - website_mail - website - web_editor - web_planner - website_partner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Ask questions, get answers, no distractions
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
assets_editor |
Forum Editor Assets | ir.ui.view | qweb | Inherits website.assets_editor |
assets_frontend |
Forum Assets | ir.ui.view | qweb | Inherits website.assets_frontend |
badge |
badge | ir.ui.view | qweb | New |
close_post |
close_post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
content_new_forum |
content_new_forum | ir.ui.view | qweb | Inherits website.user_navbar |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
edit_post | ir.ui.view | qweb | New |
edit_profile |
edit_profile | ir.ui.view | qweb | New |
edit_welcome_message |
edit_welcome_message | ir.ui.view | qweb | New |
faq |
faq | ir.ui.view | qweb | New |
forum_all |
forum_all | ir.ui.view | qweb | New |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_post_template_new_answer |
forum_post_template_new_answer | ir.ui.view | qweb | New |
forum_post_template_new_question |
forum_post_template_new_question | ir.ui.view | qweb | New |
forum_post_template_validation |
forum_post_template_validation | ir.ui.view | qweb | New |
forum_tag_view_form |
forum.tag.form | forum.tag | form | New |
forum_tag_view_list |
forum.tag.list | forum.tag | tree | New |
forum_user_tooltip |
forum_user_tooltip | ir.ui.view | qweb | New |
forum_view_search |
forum.forum.search | forum.forum | search | New |
header |
Forum Index | ir.ui.view | qweb | New |
header_footer_custom |
Footer Questions Link | ir.ui.view | qweb | Inherits website.footer_default |
layout |
Forum Layout | ir.ui.view | qweb | Inherits website.layout |
link_button |
link_button | ir.ui.view | qweb | New |
moderation_display_post_answer |
moderation_display_post_answer | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
moderation_queue | ir.ui.view | qweb | New |
new_discussion |
new_discussion | ir.ui.view | qweb | New |
new_link |
new_link | ir.ui.view | qweb | New |
new_question |
new_question | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_answers |
post_answers | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_reply |
post_reply | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | New |
tag |
tag | ir.ui.view | qweb | New |
user_badges |
user_badges | ir.ui.view | qweb | New |
user_detail_full |
user_detail_full | ir.ui.view | qweb | New |
user_votes |
user_votes | ir.ui.view | qweb | New |
users |
users | ir.ui.view | qweb | New |
view_forum_forum_form |
forum.forum.form | forum.forum | form | New |
view_forum_forum_list |
forum.forum.list | forum.forum | tree | New |
view_forum_post_form |
forum.post.form | forum.post | form | New |
view_forum_post_graph |
forum.post.graph | forum.post | graph | New |
view_forum_post_list |
forum.post.list | forum.post | tree | New |
view_forum_post_search |
forum.post.search | forum.post | search | New |
view_users_form_forum |
res.users.form.forum | res.users | field | Inherits base.view_users_form |
vote |
vote | ir.ui.view | qweb | New |
active
Boolean
default=True
allow_bump
Boolean
default=True
help='Check this box to display a popup for posts older than 10 days without any given answer. The popup will offer to share it on social networks. When shared, a question is bumped at the top of the forum.'
args: 'Allow Bump'
allow_discussion
Boolean
default=True
args: 'Discussions'
allow_link
Boolean
default=True
help='When clicking on the post, it redirects to an external link'
args: 'Links'
allow_question
Boolean
default=True
help='Users can answer only once per question. Contributors can edit answers and mark the right ones.'
args: 'Questions'
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='write_date desc'
required=True
string='Default Order'
args: [('create_date desc', 'Newest'), ('write_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
default_post_type
Selection
default='question'
required=True
string='Default Post'
args: [('question', 'Question'), ('discussion', 'Discussion'), ('link', 'Link')]
description
Text
default='This community is for professionals and enthusiasts of our products and services. Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.'
translate=True
args: 'Description'
faq
Html
default=_get_default_faq
translate=True
args: 'Guidelines'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all answers to comments and vice versa'
karma_comment_convert_own
Integer
default=50
string='Convert own answers to comments and vice versa'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Unlink all comments'
karma_comment_unlink_own
Integer
default=50
string='Unlink own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_edit_retag
Integer
default=75
oldname='karma_retag'
string='Change question tags'
karma_editor
Integer
default=30
oldname='karma_editor_link_files'
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_tag_create
Integer
default=30
string='Create new tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
name
Char
required=True
translate=True
args: 'Forum Name'
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
welcome_message
Html
default='<section class="bg-info" style="height: 168px;"><div class="container">\n <div class="row">\n <div class="col-md-12">\n <h1 class="text-center" style="text-align: left;">Welcome!</h1>\n <p class="text-muted text-center" style="text-align: left;">This community is for professionals and enthusiasts of our products and services. Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.</p>\n </div>\n <div class="col-md-12">\n <a href="#" class="js_close_intro">Hide Intro</a> <a class="btn btn-primary forum_register_url" href="/web/login">Register</a> </div>\n </div>\n </div>\n </section>'
args: 'Welcome Message'
create(self, values)
get_tags_first_char(self)
init(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
bump_date
Datetime
help='Technical field allowing to bump a question. Writing on this field will trigger a write on write_date and therefore bump the post. Directly writing on write_date is currently not supported and this field is a workaround.'
readonly=True
args: 'Bumped on'
can_accept
Boolean
compute='_get_post_karma_rights'
args: 'Can Accept'
can_answer
Boolean
compute='_get_post_karma_rights'
args: 'Can Answer'
can_ask
Boolean
compute='_get_post_karma_rights'
args: 'Can Ask'
can_close
Boolean
compute='_get_post_karma_rights'
args: 'Can Close'
can_comment
Boolean
compute='_get_post_karma_rights'
args: 'Can Comment'
can_comment_convert
Boolean
compute='_get_post_karma_rights'
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_get_post_karma_rights'
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_get_post_karma_rights'
args: 'Can Downvote'
can_edit
Boolean
compute='_get_post_karma_rights'
args: 'Can Edit'
can_flag
Boolean
compute='_get_post_karma_rights'
args: 'Can Flag'
can_moderate
Boolean
compute='_get_post_karma_rights'
args: 'Can Moderate'
can_post
Boolean
compute='_get_post_karma_rights'
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_get_post_karma_rights'
args: 'Can Unlink'
can_upvote
Boolean
compute='_get_post_karma_rights'
args: 'Can Upvote'
can_view
Boolean
compute='_get_post_karma_rights'
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_get_child_count'
store=True
args: 'Number of answers'
child_ids
One2many → forum.post
string='Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
index=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
content_link
Char
help='URL of Link Articles'
args: 'URL'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_get_favorite_count'
store=True
args: 'Favorite Count'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_get_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_get_post_karma_rights'
args: 'Convert comment to answer'
karma_close
Integer
compute='_get_post_karma_rights'
args: 'Karma to close'
karma_comment
Integer
compute='_get_post_karma_rights'
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_get_post_karma_rights'
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_get_post_karma_rights'
args: 'Karma to edit'
karma_flag
Integer
compute='_get_post_karma_rights'
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_get_post_karma_rights'
args: 'Karma to unlink'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
ondelete='cascade'
string='Question'
args: 'forum.post'
plain_content
Text
compute='_get_plain_content'
store=True
args: 'Plain Content'
post_type
Selection
default='question'
required=True
string='Type'
args: [('question', 'Question'), ('link', 'Article'), ('discussion', 'Discussion')]
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_is_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Close'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_get_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_get_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_get_user_vote'
args: 'My Vote'
views
Integer
default=0
args: 'Number of Views'
vote_count
Integer
compute='_get_vote_count'
store=True
args: 'Total Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_message_ids
One2many → mail.message
domain=<expr>
help='Comments on forum post'
string='Post Messages'
args: 'mail.message', 'res_id'
write_date
Datetime
index=True
readonly=True
args: 'Update on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
bump(self)
check_mail_message_access(self, res_ids, operation, model_name=None)
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id, default=None)
create(self, vals)
flag(self)
get_access_action(self)
mark_as_offensive(self, reason_id)
message_get_message_notify_values(self, message, message_values)
message_post(self, message_type='notification', subtype=None, **kwargs)
name_get(self)
post_notification(self)
refuse(self)
reopen(self)
set_viewed(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Char
string='Reason Type'
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals)
write(self, values)
create_uid
Many2one → res.users
readonly=True
string='Created by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
domain=[('state', '=', 'active')]
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_id'
posts_count
Integer
compute='_get_posts_count'
store=True
args: 'Number of Posts'
create(self, vals)
level
Selection
string='Forum Badge Level'
args: [('bronze', 'bronze'), ('silver', 'silver'), ('gold', 'gold')]
No public methods.
level
Selection
related='badge_id.level'
store=True
string='Forum Badge Level'
args: [('bronze', 'bronze'), ('silver', 'silver'), ('gold', 'gold')]
No public methods.
category
Selection
selection_add=[('forum', 'Website / Forum')]
No public methods.
badge_ids
One2many → gamification.badge.user
copy=False
string='Badges'
args: 'gamification.badge.user', 'user_id'
bronze_badge
Integer
compute='_get_user_badge_level'
args: 'Bronze badges count'
create_date
Datetime
copy=False
index=True
readonly=True
args: 'Create Date'
forum_waiting_posts_count
Integer
compute='_get_user_waiting_post'
args: 'Waiting post'
gold_badge
Integer
compute='_get_user_badge_level'
args: 'Gold badges count'
karma
Integer
default=0
args: 'Karma'
silver_badge
Integer
compute='_get_user_badge_level'
args: 'Silver badges count'
add_karma(self, karma)
open_website_url(self)
process_forum_validation_token(self, token, email, forum_id=None, context=None)
send_forum_validation_email(self, forum_id=None)
| 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_forum |
| 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, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Christophe Simonis, David Monjoie, Xavier Morel, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, Richard Mathot, Géry Debongnie, Jeremy Kersten, Julien De Coster, tpa-odoo, Yannick Tivisse, qsm-odoo, Jaysinh Shukla |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/community-builder |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:48:31 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - auth_signup - base_setup - base - web_kanban - web - bus - gamification - web_kanban_gauge - website_mail - website - web_editor - web_planner - website_partner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Ask questions, get answers, no distractions
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
assets_editor |
Forum Editor Assets | ir.ui.view | qweb | Inherits website.assets_editor |
assets_frontend |
Forum Assets | ir.ui.view | qweb | Inherits website.assets_frontend |
badge |
badge | ir.ui.view | qweb | New |
badge_user |
badge_user | ir.ui.view | qweb | New |
close_post |
close_post | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
content_new_forum |
content_new_forum | ir.ui.view | qweb | Inherits website.user_navbar |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
display_post_question_block |
display_post_question_block | ir.ui.view | qweb | New |
edit_post |
edit_post | ir.ui.view | qweb | New |
edit_profile |
edit_profile | ir.ui.view | qweb | New |
edit_welcome_message |
edit_welcome_message | ir.ui.view | qweb | New |
faq |
faq | ir.ui.view | qweb | New |
forum_all |
forum_all | ir.ui.view | qweb | New |
forum_index |
Forum | ir.ui.view | qweb | New |
forum_user_tooltip |
forum_user_tooltip | ir.ui.view | qweb | New |
header |
Forum Index | ir.ui.view | qweb | New |
header_footer_custom |
Footer Questions Link | ir.ui.view | qweb | Inherits website.footer_default |
link_button |
link_button | ir.ui.view | qweb | New |
moderation_display_post_answer |
moderation_display_post_answer | ir.ui.view | qweb | New |
moderation_display_post_question_block |
moderation_display_post_question_block | ir.ui.view | qweb | New |
moderation_queue |
moderation_queue | ir.ui.view | qweb | New |
new_discussion |
new_discussion | ir.ui.view | qweb | New |
new_link |
new_link | ir.ui.view | qweb | New |
new_question |
new_question | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_answers |
post_answers | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
post_reply |
post_reply | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | New |
tag |
tag | ir.ui.view | qweb | New |
user_badges |
user_badges | ir.ui.view | qweb | New |
user_detail_full |
user_detail_full | ir.ui.view | qweb | New |
user_votes |
user_votes | ir.ui.view | qweb | New |
users |
users | ir.ui.view | qweb | New |
view_forum_forum_form |
forum.forum.form | forum.forum | form | New |
view_forum_forum_list |
forum.forum.list | forum.forum | tree | New |
view_forum_post_form |
forum.post.form | forum.post | form | New |
view_forum_post_graph |
forum.post.graph | forum.post | graph | New |
view_forum_post_list |
forum.post.list | forum.post | tree | New |
view_forum_post_search |
forum.post.search | forum.post | search | New |
view_users_form_forum |
res.users.form.forum | res.users | field | Inherits base.view_users_form |
vote |
vote | ir.ui.view | qweb | New |
allow_bump
Boolean
default=True
help='Check this box to display a popup for posts older than 10 days without any given answer. The popup will offer to share it on social networks. When shared, a question is bumped at the top of the forum.'
args: 'Allow Bump'
allow_discussion
Boolean
default=True
args: 'Discussions'
allow_link
Boolean
default=True
help='When clicking on the post, it redirects to an external link'
args: 'Links'
allow_question
Boolean
default=True
help='Users can answer only once per question. Contributors can edit answers and mark the right ones.'
args: 'Questions'
allow_share
Boolean
default=True
help='After posting the user will be proposed to share its question or answer on social networks, enabling social network propagation of the forum content.'
args: 'Sharing Options'
count_flagged_posts
Integer
compute='_compute_count_flagged_posts'
string='Number of flagged posts'
count_posts_waiting_validation
Integer
compute='_compute_count_posts_waiting_validation'
string='Number of posts waiting for validation'
default_order
Selection
default='write_date desc'
required=True
string='Default Order'
args: [('create_date desc', 'Newest'), ('write_date desc', 'Last Updated'), ('vote_count desc', 'Most Voted'), ('relevancy desc', 'Relevance'), ('child_count desc', 'Answered')]
default_post_type
Selection
default='question'
required=True
string='Default Post'
args: [('question', 'Question'), ('discussion', 'Discussion'), ('link', 'Link')]
description
Text
default='This community is for professionals and enthusiasts of our products and services. Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.'
translate=True
args: 'Description'
faq
Html
default=_get_default_faq
translate=True
args: 'Guidelines'
karma_answer
Integer
default=3
string='Answer questions'
karma_answer_accept_all
Integer
default=500
string='Accept an answer to all questions'
karma_answer_accept_own
Integer
default=20
string='Accept an answer on own questions'
karma_ask
Integer
default=3
string='Ask questions'
karma_close_all
Integer
default=500
string='Close all posts'
karma_close_own
Integer
default=100
string='Close own posts'
karma_comment_all
Integer
default=1
string='Comment all posts'
karma_comment_convert_all
Integer
default=500
string='Convert all answers to comments and vice versa'
karma_comment_convert_own
Integer
default=50
string='Convert own answers to comments and vice versa'
karma_comment_own
Integer
default=1
string='Comment own posts'
karma_comment_unlink_all
Integer
default=500
string='Unlink all comments'
karma_comment_unlink_own
Integer
default=50
string='Unlink own comments'
karma_dofollow
Integer
default=500
help='If the author has not enough karma, a nofollow attribute is added to links'
string='Nofollow links'
karma_downvote
Integer
default=50
string='Downvote'
karma_edit_all
Integer
default=300
string='Edit all posts'
karma_edit_own
Integer
default=1
string='Edit own posts'
karma_editor
Integer
default=30
oldname='karma_editor_link_files'
string='Editor Features: image and links'
karma_flag
Integer
default=500
string='Flag a post as offensive'
karma_gen_answer_accept
Integer
default=2
string='Accepting an answer'
karma_gen_answer_accepted
Integer
default=15
string='Answer accepted'
karma_gen_answer_downvote
Integer
default=-2
string='Answer downvoted'
karma_gen_answer_flagged
Integer
default=-100
string='Answer flagged'
karma_gen_answer_upvote
Integer
default=10
string='Answer upvoted'
karma_gen_question_downvote
Integer
default=-2
string='Question downvoted'
karma_gen_question_new
Integer
default=2
string='Asking a question'
karma_gen_question_upvote
Integer
default=5
string='Question upvoted'
karma_moderate
Integer
default=1000
string='Moderate posts'
karma_post
Integer
default=100
string='Ask questions without validation'
karma_retag
Integer
default=75
string='Change question tags'
karma_unlink_all
Integer
default=1000
string='Delete all posts'
karma_unlink_own
Integer
default=500
string='Delete own posts'
karma_upvote
Integer
default=5
string='Upvote'
karma_user_bio
Integer
default=750
string='Display detailed user biography'
name
Char
required=True
translate=True
args: 'Forum Name'
relevancy_post_vote
Float
default=0.8
help="This formula is used in order to sort by relevance. The variable 'votes' represents number of votes for a post, and 'days' is number of days since the post creation"
args: 'First Relevance Parameter'
relevancy_time_decay
Float
default=1.8
args: 'Second Relevance Parameter'
welcome_message
Html
default='<section class="bg-info" style="height: 168px;"><div class="container">\n <div class="row">\n <div class="col-md-12">\n <h1 class="text-center" style="text-align: left;">Welcome!</h1>\n <p class="text-muted text-center" style="text-align: left;">This community is for professionals and enthusiasts of our products and services. Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.</p>\n </div>\n <div class="col-md-12">\n <a href="#" class="js_close_intro">Hide Intro</a> <a class="btn btn-primary forum_register_url" href="/web/login">Register</a> </div>\n </div>\n </div>\n </section>'
args: 'Welcome Message'
create(self, values)
get_tags_first_char(self)
init(self, cr)
active
Boolean
default=True
args: 'Active'
bump_date
Datetime
help='Technical field allowing to bump a question. Writing on this field will trigger a write on write_date and therefore bump the post. Directly writing on write_date is currently not supported and this field is a workaround.'
readonly=True
args: 'Bumped on'
can_accept
Boolean
compute='_get_post_karma_rights'
args: 'Can Accept'
can_answer
Boolean
compute='_get_post_karma_rights'
args: 'Can Answer'
can_ask
Boolean
compute='_get_post_karma_rights'
args: 'Can Ask'
can_close
Boolean
compute='_get_post_karma_rights'
args: 'Can Close'
can_comment
Boolean
compute='_get_post_karma_rights'
args: 'Can Comment'
can_comment_convert
Boolean
compute='_get_post_karma_rights'
args: 'Can Convert to Comment'
can_display_biography
Boolean
compute='_get_post_karma_rights'
args: "Is the author's biography visible from his post"
can_downvote
Boolean
compute='_get_post_karma_rights'
args: 'Can Downvote'
can_edit
Boolean
compute='_get_post_karma_rights'
args: 'Can Edit'
can_flag
Boolean
compute='_get_post_karma_rights'
args: 'Can Flag'
can_moderate
Boolean
compute='_get_post_karma_rights'
args: 'Can Moderate'
can_post
Boolean
compute='_get_post_karma_rights'
args: 'Can Automatically be Validated'
can_unlink
Boolean
compute='_get_post_karma_rights'
args: 'Can Unlink'
can_upvote
Boolean
compute='_get_post_karma_rights'
args: 'Can Upvote'
can_view
Boolean
compute='_get_post_karma_rights'
search='_search_can_view'
args: 'Can View'
child_count
Integer
compute='_get_child_count'
store=True
args: 'Number of answers'
child_ids
One2many → forum.post
string='Answers'
args: 'forum.post', 'parent_id'
closed_date
Datetime
readonly=True
args: 'Closed on'
closed_reason_id
Many2one → forum.post.reason
string='Reason'
args: 'forum.post.reason'
closed_uid
Many2one → res.users
index=True
string='Closed by'
args: 'res.users'
content
Html
strip_style=True
args: 'Content'
content_link
Char
help='URL of Link Articles'
args: 'URL'
create_date
Datetime
index=True
readonly=True
args: 'Asked on'
create_uid
Many2one → res.users
index=True
readonly=True
string='Created by'
args: 'res.users'
favourite_count
Integer
compute='_get_favorite_count'
store=True
args: 'Favorite Count'
favourite_ids
Many2many → res.users
string='Favourite'
args: 'res.users'
flag_user_id
Many2one → res.users
string='Flagged by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
has_validated_answer
Boolean
compute='_get_has_validated_answer'
store=True
args: 'Is answered'
is_correct
Boolean
help='Correct answer or answer accepted'
args: 'Correct'
karma_accept
Integer
compute='_get_post_karma_rights'
args: 'Convert comment to answer'
karma_close
Integer
compute='_get_post_karma_rights'
args: 'Karma to close'
karma_comment
Integer
compute='_get_post_karma_rights'
args: 'Karma to comment'
karma_comment_convert
Integer
compute='_get_post_karma_rights'
args: 'Karma to convert comment to answer'
karma_edit
Integer
compute='_get_post_karma_rights'
args: 'Karma to edit'
karma_flag
Integer
compute='_get_post_karma_rights'
args: 'Flag a post as offensive'
karma_unlink
Integer
compute='_get_post_karma_rights'
args: 'Karma to unlink'
moderator_id
Many2one → res.users
readonly=True
string='Reviewed by'
args: 'res.users'
name
Char
parent_id
Many2one → forum.post
ondelete='cascade'
string='Question'
args: 'forum.post'
plain_content
Text
compute='_get_plain_content'
store=True
args: 'Plain Content'
post_type
Selection
default='question'
required=True
string='Type'
args: [('question', 'Question'), ('link', 'Article'), ('discussion', 'Discussion')]
relevancy
Float
compute='_compute_relevancy'
store=True
args: 'Relevance'
self_reply
Boolean
compute='_is_self_reply'
store=True
args: 'Reply to own question'
state
Selection
default='active'
string='Status'
args: [('active', 'Active'), ('pending', 'Waiting Validation'), ('close', 'Close'), ('offensive', 'Offensive'), ('flagged', 'Flagged')]
tag_ids
Many2many → forum.tag
string='Tags'
args: 'forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id'
uid_has_answered
Boolean
compute='_get_uid_has_answered'
args: 'Has Answered'
user_favourite
Boolean
compute='_get_user_favourite'
args: 'Is Favourite'
user_vote
Integer
compute='_get_user_vote'
args: 'My Vote'
views
Integer
default=0
args: 'Number of Views'
vote_count
Integer
compute='_get_vote_count'
store=True
args: 'Votes'
vote_ids
One2many → forum.post.vote
string='Votes'
args: 'forum.post.vote', 'post_id'
website_message_ids
One2many → mail.message
domain=<expr>
help='Comments on forum post'
string='Post Messages'
args: 'mail.message', 'res_id'
write_date
Datetime
index=True
readonly=True
args: 'Update on'
write_uid
Many2one → res.users
index=True
readonly=True
string='Updated by'
args: 'res.users'
bump(self)
check_mail_message_access(self, res_ids, operation, model_name=None)
close(self, reason_id)
convert_answer_to_comment(self)
convert_comment_to_answer(self, message_id, default=None)
create(self, vals)
flag(self)
get_access_action(self)
mark_as_offensive(self, reason_id)
message_post(self, cr, uid, thread_id, message_type='notification', subtype=None, context=None, **kwargs)
name_get(self)
post_notification(self)
refuse(self)
reopen(self)
set_viewed(self)
unlink(self)
unlink_comment(self, message_id)
validate(self)
vote(self, upvote=True)
write(self, vals)
name
Char
required=True
string='Closing Reason'
translate=True
reason_type
Char
string='Reason Type'
No public methods.
create_date
Datetime
index=True
readonly=True
args: 'Create Date'
forum_id
Many2one → forum.forum
related='post_id.forum_id'
store=True
string='Forum'
args: 'forum.forum'
post_id
Many2one → forum.post
ondelete='cascade'
required=True
string='Post'
args: 'forum.post'
recipient_id
Many2one → res.users
related='post_id.create_uid'
store=True
string='To'
args: 'res.users'
user_id
Many2one → res.users
default=<expr>
required=True
string='User'
args: 'res.users'
vote
Selection
default='1'
required=True
string='Vote'
args: [('1', '1'), ('-1', '-1'), ('0', '0')]
create(self, vals)
write(self, values)
create_uid
Many2one → res.users
readonly=True
string='Created by'
args: 'res.users'
forum_id
Many2one → forum.forum
required=True
string='Forum'
args: 'forum.forum'
name
Char
required=True
args: 'Name'
post_ids
Many2many → forum.post
string='Posts'
args: 'forum.post', 'forum_tag_rel', 'forum_tag_id', 'forum_id'
posts_count
Integer
compute='_get_posts_count'
store=True
args: 'Number of Posts'
No public methods.
level
Selection
string='Forum Badge Level'
args: [('bronze', 'bronze'), ('silver', 'silver'), ('gold', 'gold')]
No public methods.
level
Selection
related='badge_id.level'
store=True
string='Forum Badge Level'
args: [('bronze', 'bronze'), ('silver', 'silver'), ('gold', 'gold')]
No public methods.
No new fields.
Public methods (0)No public methods.
badge_ids
One2many → gamification.badge.user
copy=False
string='Badges'
args: 'gamification.badge.user', 'user_id'
bronze_badge
Integer
compute='_get_user_badge_level'
args: 'Bronze badges count'
create_date
Datetime
copy=False
index=True
readonly=True
args: 'Create Date'
gold_badge
Integer
compute='_get_user_badge_level'
args: 'Gold badges count'
karma
Integer
default=0
args: 'Karma'
silver_badge
Integer
compute='_get_user_badge_level'
args: 'Silver badges count'
add_karma(self, karma)
get_serialised_gamification_summary(self, excluded_categories=None)
open_website_url(self)
process_forum_validation_token(self, token, email, forum_id=None, context=None)
send_forum_validation_email(self, forum_id=None)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/8.0/website_forum |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Turkesh Patel (Open ERP), Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Christophe Simonis, Xavier Morel, Simon Lejeune, Nicolas Lempereur, Richard Mathot, Géry Debongnie, ged-odoo, Yogesh Parekh, Jeremy Kersten, Sunil Sharma (OpenERP), --global, Mantavya Gajjar, Sunil Sharma, Hitesh Trivedi |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/community-builder |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:45:40 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - auth_signup - base_setup - base - web_kanban - web - email_template - gamification - web_kanban_gauge - website_mail - website - share - website_partner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Ask questions, get answers, no distractions
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
404 |
404 | ir.ui.view | qweb | New |
ask_question |
ask_question | ir.ui.view | qweb | New |
assets_editor |
Forum Editor | ir.ui.view | qweb | Inherits website.assets_editor |
assets_frontend |
website_forum assets | ir.ui.view | qweb | Inherits website.assets_frontend |
badge |
badge | ir.ui.view | qweb | New |
badge_user |
badge_user | ir.ui.view | qweb | New |
close_question |
close_question | ir.ui.view | qweb | New |
contact |
Forum Contact Widget | ir.ui.view | qweb | Inherits base.contact |
content_new_forum |
content_new_forum | ir.ui.view | qweb | Inherits website.user_navbar |
display_post |
display_post | ir.ui.view | qweb | New |
display_post_answer |
display_post_answer | ir.ui.view | qweb | New |
edit_post |
edit_post | ir.ui.view | qweb | New |
edit_profile |
edit_profile | ir.ui.view | qweb | New |
faq |
faq | ir.ui.view | qweb | New |
forum_all |
forum_all | ir.ui.view | qweb | New |
forum_index |
Forum | ir.ui.view | qweb | New |
header |
Forum Index | ir.ui.view | qweb | New |
header_footer_custom |
Footer Questions Link | ir.ui.view | qweb | Inherits website.footer_default |
link_button |
link_button | ir.ui.view | qweb | New |
post_answer |
post_answer | ir.ui.view | qweb | New |
post_comment |
post_comment | ir.ui.view | qweb | New |
post_description_full |
Question Navigation | ir.ui.view | qweb | New |
private_profile |
private_profile | ir.ui.view | qweb | New |
tag |
tag | ir.ui.view | qweb | New |
user_badges |
user_badges | ir.ui.view | qweb | New |
user_detail_full |
user_detail_full | ir.ui.view | qweb | New |
user_votes |
user_votes | ir.ui.view | qweb | New |
users |
users | ir.ui.view | qweb | New |
view_forum_forum_form |
forum.forum.form | forum.forum | form | New |
view_forum_forum_list |
forum.forum.list | forum.forum | tree | New |
view_forum_post_form |
forum.post.form | forum.post | form | New |
view_forum_post_list |
forum.post.list | forum.post | tree | New |
view_forum_post_search |
forum.post.search | forum.post | search | New |
view_users_form_forum |
res.users.form.forum | res.users | field | Inherits base.view_users_form |
view_users_form_simple_modif_forum |
res.users.preferences.form | res.users | group | Inherits base.view_users_form_simple_modif |
vote |
vote | ir.ui.view | qweb | New |
No new fields.
Public methods (2)create(self, cr, uid, values, context=None)
init(self, cr)
No new fields.
Public methods (13)check_mail_message_access(self, cr, uid, mids, operation, model_obj=None, context=None)
close(self, cr, uid, ids, reason_id, context=None)
convert_answer_to_comment(self, cr, uid, id, context=None)
convert_comment_to_answer(self, cr, uid, message_id, default=None, context=None)
create(self, cr, uid, vals, context=None)
message_post(self, cr, uid, thread_id, type='notification', subtype=None, context=None, **kwargs)
name_get(self, cr, uid, ids, context=None)
reopen(self, cr, uid, ids, context=None)
set_viewed(self, cr, uid, ids, context=None)
unlink(self, cr, uid, ids, context=None)
unlink_comment(self, cr, uid, id, message_id, context=None)
vote(self, cr, uid, ids, upvote=True, context=None)
write(self, cr, uid, ids, vals, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)create(self, cr, uid, vals, context=None)
write(self, cr, uid, ids, values, context=None)
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.
No new fields.
Public methods (4)add_karma(self, cr, uid, ids, karma, context=None)
get_serialised_gamification_summary(self, cr, uid, excluded_categories=None, context=None)
process_forum_validation_token(self, cr, uid, token, user_id, email, forum_id=None, context=None)
send_forum_validation_email(self, cr, uid, user_id, forum_id=None, context=None)