TIP: You can type at any time to perform a new search.
Blog
website_blog · odoo/odoo
Security findings
- Repository
- odoo/odoo · module folder
- Module version
- 1.1
- Category
- Website/Website
- Folder size
- 7.43 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://www.odoo.com/app/blog
- Last tracking update
- 2026-10-05 00:19:40
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Raphael Collet, Thibault Delavallée, odoo, Odoo Translation Bot, Christophe Matthieu, Nicolas Lempereur, qsm-odoo, Xavier-Do, Victor Feyens, Julien Mougenot, Achraf (abz), David Beguin, Tiffany Chang (tic), Benjamin Vray, Antoine Guenet, Hubert Van De Walle, Victor Piryns (pivi), Robin Lejeune (role), Soukéina Bojabza, Louis (loco), Dylan Kiss (dyki), FrancoisGe, Chong Wang (cwg), Brieuc-brd, divy-odoo, omra-odoo, Maryam Kia, Mehdi Outagant (MOU), mano-odoo, thle-odoo, Arib Ansari, Sébastien (blse), abdelrahmanfawzy, Pierre Pulinckx, Michaël Mattiello, Krzysztof Magusiak (krma), Rushil Patel, Giorgio Tocco (gito), Julien Launois (jula), rusp-odoo, dtda-odoo, alap-odoo, Augustin (duau), Garvish Panchal, Parth Pujara, Serhii Rubanskyi, chdh-odoo, romo, Davide Bonetto, Alessandro Lupo, Ayush Modi, Benoit Socias (bso), Mazen, Serge Bayet, Rudra Patel, assk-odoo, Atovange, h4818 (ayh), Parth Vyas, chpa-odoo, Divyesh Vyas (divy), Julien Coppin (jucop), Julien Piron
Code Analysis
Views touched (134)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
blog_blog_view_search |
blog.blog.search | blog.blog | search | New |
blog_feed |
blog_feed | ir.ui.view | qweb | New |
blog_post_card |
Blog Post Card | ir.ui.view | qweb | New |
blog_post_comment_count |
Blog Post Comment Count | ir.ui.view | qweb | New |
blog_post_content |
Blog post content | ir.ui.view | qweb | New |
blog_post_content_footer_archive |
Content Footer Mobile Archive | ir.ui.view | qweb | Inherits website_blog.blog_post_content |
blog_post_content_footer_share_links |
Content Footer Share Links | ir.ui.view | qweb | Inherits website_blog.blog_post_content |
blog_post_content_mobile_toc |
Content Mobile Table of Contents | ir.ui.view | qweb | Inherits website_blog.blog_post_content |
blog_post_info |
Blog Post Info | ir.ui.view | qweb | New |
blog_post_list_card |
Blog Post List Card | ir.ui.view | qweb | New |
blog_post_minimal_list_card |
Blog Post Minimal List Card | ir.ui.view | qweb | New |
blog_post_next_compact |
Next Post Compact | ir.ui.view | qweb | New |
blog_post_next_full_cover |
Next Post Full Cover | ir.ui.view | qweb | New |
blog_post_regular_cover_share_links |
Regular Cover Share Links | ir.ui.view | qweb | Inherits website_blog.opt_blog_post_regular_cover |
blog_post_short |
Blog Posts | ir.ui.view | qweb | New |
blog_post_sidebar |
Sidebar - Blog Post | ir.ui.view | qweb | New |
blog_post_split_cover_share_links |
Split Cover Share Links | ir.ui.view | qweb | Inherits website_blog.opt_blog_post_split_cover |
blog_post_split_sticky_card |
Blog Post Split Sticky Card | ir.ui.view | qweb | New |
blog_post_template_new_post |
blog_post_template_new_post | ir.ui.view | qweb | New |
blog_post_view_form_add |
blog.post.view.form.add | blog.post | form | New |
blog_post_view_kanban |
blog.post.kanban | blog.post | kanban | New |
blog_tag_category_form |
blog_tag_category_form | blog.tag.category | form | New |
blog_tag_category_tree |
blog_tag_category.list | blog.tag.category | list | New |
blog_tag_form |
blog_tag_form | blog.tag | form | New |
blog_tag_tree |
blog_tag.list | blog.tag | list | New |
blogs_nav |
Blogs Bar Template | ir.ui.view | qweb | New |
date_selector |
date_selector | ir.ui.view | qweb | New |
dynamic_filter_template_blog_post_big_picture |
Big picture | ir.ui.view | qweb | New |
dynamic_filter_template_blog_post_card |
Card | ir.ui.view | qweb | New |
dynamic_filter_template_blog_post_horizontal |
Horizontal | ir.ui.view | qweb | New |
dynamic_filter_template_blog_post_list |
List | ir.ui.view | qweb | New |
dynamic_filter_template_blog_post_single_aside |
Solo Aside | ir.ui.view | qweb | New |
dynamic_filter_template_blog_post_single_badge |
Solo Badge | ir.ui.view | qweb | New |
dynamic_filter_template_blog_post_single_circle |
Solo Circle | ir.ui.view | qweb | New |
dynamic_filter_template_blog_post_single_full |
Solo Full | ir.ui.view | qweb | New |
index |
Blog Navigation | ir.ui.view | qweb | New |
opt_blog_bordered_grid_view |
Bordered Grid View | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_cards_design |
'Cards' Design | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_compact_list_view |
Compact List View | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_cover_post |
Top banner - Name / Latest Post | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_cover_post_fullwidth_design |
Full-Width Cover | ir.ui.view | qweb | Inherits website_blog.opt_blog_cover_post |
opt_blog_fullwidth |
Full Width | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_grid_columns_2 |
Grid: 2 Columns | ir.ui.view | qweb | Inherits website_blog.posts_loop |
opt_blog_grid_columns_3 |
Grid: 3 Columns | ir.ui.view | qweb | Inherits website_blog.posts_loop |
opt_blog_grid_columns_4 |
Grid: 4 Columns | ir.ui.view | qweb | Inherits website_blog.posts_loop |
opt_blog_large_list_view |
Large List View | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_list_view |
List View | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_page_title |
Blogs Page Title | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_post_archive_display |
Archive | ir.ui.view | qweb | Inherits website_blog.blog_post_sidebar |
opt_blog_post_author_avatar_display |
Author | ir.ui.view | qweb | Inherits website_blog.blog_post_sidebar |
opt_blog_post_blogs_display |
Blogs List | ir.ui.view | qweb | Inherits website_blog.blog_post_sidebar |
opt_blog_post_breadcrumb |
Show Breadcrumb | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_comment |
Allow Comments | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_footer_share_links_display |
Show Footer Share Links | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_footer_tags_display |
Show Footer Tags | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_full_container |
Full Width Container | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_full_width_cover |
Full Width Cover | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_header_author_avatar_display |
Show Author Avatar | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_header_share_links_display |
Show Share Links | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_header_tags_display |
Show Tags | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_large_container |
Large Width Container | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_read_next |
Read Next Article | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_readable |
Increase Readability | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_regular_cover |
'Regular' Cover | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_share_links_display |
Share Links | ir.ui.view | qweb | Inherits website_blog.blog_post_sidebar |
opt_blog_post_sidebar |
Show Sidebar | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_split_cover |
Split Cover | ir.ui.view | qweb | Inherits website_blog.blog_post_complete |
opt_blog_post_tags_display |
Tags | ir.ui.view | qweb | Inherits website_blog.blog_post_sidebar |
opt_blog_post_toc_display |
Table of Contents | ir.ui.view | qweb | Inherits website_blog.blog_post_sidebar |
opt_blog_promoted_post |
Promoted Post | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_readable |
Increase Readability | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_sidebar_show |
Show Sidebar | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_simple_list_view |
Simple List View | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_blog_split_grid_view |
Split Grid View | ir.ui.view | qweb | Inherits website_blog.blog_post_short |
opt_posts_loop_show_author |
Author | ir.ui.view | qweb | Inherits website_blog.posts_loop |
opt_posts_loop_show_cover |
Cover | ir.ui.view | qweb | Inherits website_blog.posts_loop |
opt_posts_loop_show_date |
Date | ir.ui.view | qweb | Inherits website_blog.posts_loop |
opt_posts_loop_show_filter |
Filter | ir.ui.view | qweb | Inherits website_blog.posts_loop |
opt_posts_loop_show_stats |
Comments/Views Stats | ir.ui.view | qweb | Inherits website_blog.posts_loop |
opt_posts_loop_show_tags |
Tags | ir.ui.view | qweb | Inherits website_blog.posts_loop |
opt_posts_loop_show_teaser |
Teaser | ir.ui.view | qweb | Inherits website_blog.posts_loop |
opt_sidebar_blog_index_about_us |
About Us | ir.ui.view | qweb | Inherits website_blog.sidebar_blog_index |
opt_sidebar_blog_index_archives |
Archives | ir.ui.view | qweb | Inherits website_blog.sidebar_blog_index |
opt_sidebar_blog_index_follow_us |
Follow Us | ir.ui.view | qweb | Inherits website_blog.sidebar_blog_index |
opt_sidebar_blog_index_tags |
Tags List | ir.ui.view | qweb | Inherits website_blog.sidebar_blog_index |
post_author |
post_author | ir.ui.view | qweb | New |
post_breadcrumbs |
post_breadcrumbs | ir.ui.view | qweb | New |
post_cover_image |
post_cover_image | ir.ui.view | qweb | New |
post_heading |
post_heading | ir.ui.view | qweb | New |
post_info |
post_info | ir.ui.view | qweb | New |
post_published_info |
post_published_info | ir.ui.view | qweb | New |
post_tags |
post_tags | ir.ui.view | qweb | New |
post_teaser |
post_teaser | ir.ui.view | qweb | New |
post_unpublished_badge |
post_unpublished_badge | ir.ui.view | qweb | New |
posts_loop |
Posts List | ir.ui.view | qweb | New |
robots |
robots | ir.ui.view | qweb | Inherits website.robots |
s_blog_posts |
Blog Posts | ir.ui.view | qweb | New |
s_blog_posts_big_picture |
Blog Posts Big Picture | ir.ui.view | qweb | New |
s_blog_posts_card |
Blog Posts Card | ir.ui.view | qweb | New |
s_blog_posts_carousel |
Blog Posts Carousel | ir.ui.view | qweb | New |
s_blog_posts_carousel_preview_card |
Blog Posts Carousel Preview Card | ir.ui.view | qweb | New |
s_blog_posts_horizontal |
Blog Posts Horizontal | ir.ui.view | qweb | New |
s_blog_posts_list |
Blog Posts List | ir.ui.view | qweb | New |
s_blog_posts_single_aside |
Single Blog Post Aside | ir.ui.view | qweb | New |
s_blog_posts_single_badge |
Single Blog Post Badge | ir.ui.view | qweb | New |
s_blog_posts_single_circle |
Single Blog Post Circle | ir.ui.view | qweb | New |
s_blog_posts_single_full |
Single Blog Post Full | ir.ui.view | qweb | New |
s_dynamic_snippet_blog_posts_card_preview_data |
Blogs Preview Data | ir.ui.view | qweb | New |
s_dynamic_snippet_blog_posts_carousel_preview_data |
Blogs Carousel Preview Data | ir.ui.view | qweb | New |
s_dynamic_snippet_blog_posts_horizontal_preview_data |
Blogs Preview Data | ir.ui.view | qweb | New |
s_dynamic_snippet_blog_posts_list_preview_data |
Blogs Preview Data | ir.ui.view | qweb | New |
s_dynamic_snippet_blog_posts_preview_data |
Blogs Preview Data | ir.ui.view | qweb | New |
s_dynamic_snippet_blog_posts_single_aside_preview_data |
Single Blog Preview Data | ir.ui.view | qweb | New |
s_dynamic_snippet_blog_posts_single_badge_preview_data |
Single Blog Preview Data | ir.ui.view | qweb | New |
s_dynamic_snippet_blog_posts_single_circle_preview_data |
Single Blog Preview Data | ir.ui.view | qweb | New |
s_dynamic_snippet_blog_posts_single_full_preview_data |
Single Blog Preview Data | ir.ui.view | qweb | New |
sidebar_blog_index |
Sidebar - Blog page | ir.ui.view | qweb | New |
tags_list |
Tags List | ir.ui.view | qweb | New |
view_blog_blog_form |
blog.blog.form | blog.blog | form | New |
view_blog_blog_list |
blog.blog.list | blog.blog | list | New |
view_blog_post_form |
blog.post.form | blog.post | form | New |
view_blog_post_list |
Blog Post Pages List | blog.post | list | New |
view_blog_post_search |
blog.post.search | blog.post | search | New |
website_blog |
Snippet Blog | ir.ui.view | qweb | Inherits website.snippets |
website_blog.blog_post_complete |
Blog Post | ir.ui.view | qweb | New |
website_blog.s_dynamic_snippet_template_author |
Blog Post Author | ir.ui.view | qweb | New |
website_blog.s_dynamic_snippet_template_category |
Blog Post Category | ir.ui.view | qweb | New |
website_blog.s_dynamic_snippet_template_date |
Blog Post Date | ir.ui.view | qweb | New |
website_blog.s_dynamic_snippet_template_teaser |
Blog Post Teaser | ir.ui.view | qweb | New |
website_blog_visitor_page_view_search |
website.blog.track.view.search | website.track | search | Inherits website.website_visitor_page_view_search |
website_blog_visitor_page_view_tree |
website.track.view.list | website.track | list | New |
website_blog_visitor_track_view_tree |
website.track.view.list | website.track | list | Inherits website.website_visitor_track_view_tree |
website_blog_visitor_view_form |
website.visitor.view.form | website.visitor | form | Inherits website.website_visitor_view_form |
website_blog_visitor_view_tree |
website.blog.visitor.view.list | website.visitor | list | Inherits website.website_visitor_view_tree |
HTTP endpoints (4)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
/blog, /blog/page/<int:page>, /blog/tag/<string:tag>, /blog/tag/<string:tag>/page/<int:page>, /blog/<model("blog.blog"):blog>, /blog/<model("blog.blog"):blog>/page/<int:page>, /blog/<model("blog.blog"):blog>/tag/<string:tag>, /blog/<model("blog.blog"):blog>/tag/<string:tag>/page/<int:page> |
WebsiteBlog.blog |
public | http | ALL | website |
/blog/<model("blog.blog"):blog>/feed |
WebsiteBlog.blog_feed |
public | http | ALL | website |
/blog/<model("blog.blog"):blog>/<model("blog.post", "[('blog_id','=',blog.id)]"):blog_post> |
WebsiteBlog.blog_post |
public | http | ALL | sudo website |
/blog/<model("blog.blog"):blog>/post/<model("blog.post"):blog_post> |
WebsiteBlog.old_blog_post |
public | http | ALL | website |
Models touched (9)
New fields (7)
-
activeBooleandefault=True args: 'Active' -
blog_post_countIntegercompute='_compute_blog_post_count' args: 'Posts' -
blog_post_idsOne2many → blog.postargs: 'blog.post', 'blog_id', 'Blog Posts' -
contentHtmlsanitize=Falsetranslate=html_translate args: 'Content' -
nameCharrequired=Truetranslate=True args: 'Blog Name' -
sequenceIntegerdefault=_default_sequence args: 'Sequence' -
subtitleChartranslate=True args: 'Blog Subtitle'
-
all_tags(self, join=False, min_limit=1) -
message_post(self, *, parent_id=False, subtype_id=False, **kwargs)Temporary workaround to avoid spam. If someone replies on a channel through the 'Presentation Published' email, it should be considered as a note as we don't want all channel followers to be notified of this answer. -
write(self, vals)
New fields (18)
-
activeBooleandefault=True args: 'Active' -
author_avatarBinaryreadonly=Falserelated='author_id.image_128'string='Avatar' -
author_idMany2one → res.partnerdefault=<expr>index='btree_not_null' args: 'res.partner', 'Author' -
author_nameCharreadonly=Falserelated='author_id.display_name'store=Truestring='Author Name' -
blog_idMany2one → blog.blogdefault=<expr>index=Trueondelete='cascade'required=True args: 'blog.blog', 'Blog' -
contentHtmldefault=_default_contentsanitize=Falsetranslate=html_translate args: 'Content' -
create_dateDatetimereadonly=True args: 'Created on' -
create_uidMany2one → res.usersreadonly=True args: 'res.users', 'Created by' -
nameChardefault=''required=Truetranslate=True args: 'Title' -
recommended_next_post_idMany2one → blog.posthelp='Next blog post that will be shown as the next article to users at the bottom of the blog post.'string='Recommended Next Post' args: 'blog.post' -
subtitleChartranslate=True args: 'Sub Title' -
tag_idsMany2many → blog.tagstring='Tags' args: 'blog.tag' -
teaserTextcompute='_compute_teaser'inverse='_set_teaser'translate=True args: 'Teaser' -
teaser_manualTextstring='Teaser Content'translate=True -
visitsIntegercopy=Falsedefault=0readonly=True args: 'No of Views' -
website_idMany2onereadonly=Truerelated='blog_id.website_id'store=True -
write_dateDatetimereadonly=True args: 'Last Updated on' -
write_uidMany2one → res.usersreadonly=True args: 'res.users', 'Last Contributor'
-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (4)
-
category_idMany2one → blog.tag.categoryindex=True args: 'blog.tag.category', 'Category' -
colorIntegerargs: 'Color' -
nameCharrequired=Truetranslate=True args: 'Name' -
post_idsMany2many → blog.poststring='Posts' args: 'blog.post'
No public methods.
New fields (2)
-
nameCharrequired=Truetranslate=True args: 'Name' -
tag_idsOne2many → blog.tagstring='Tags' args: 'blog.tag', 'category_id'
No public methods.
New fields (1)
-
blog_post_idsOne2many → blog.poststring='Blog Posts' args: 'blog.post', 'author_id'
No public methods.
New fields (0)
No new fields.
Public methods (2)-
configurator_set_menu_links(self, menu_company, module_data) -
get_suggested_controllers(self)
New fields (0)
No new fields.
Public methods (1)-
default_get(self, fields)@api.model
New fields (1)
-
blog_post_idMany2one → blog.postcomodel_name='blog.post'index='btree_not_null'ondelete='cascade'readonly=True
No public methods.
New fields (2)
-
blog_post_idsMany2many → blog.postcomodel_name='blog.post'compute='_compute_blog_post_statistics'string='Blog Posts' -
visitor_blog_post_countIntegercompute='_compute_blog_post_statistics'help='Total number of views on blog posts'string='Blog Post Views'
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…