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

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
Odoo dependencies
Python dependencies
geoip2
System dependencies
None
Required by
test_website_modules
Description

Code Analysis info_outline

Views touched (134)
XML IDNameModelTypeStatus
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)HandlerAuthTypeMethodsFlags
/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)
  • active Boolean
    default=True args: 'Active'
  • blog_post_count Integer
    compute='_compute_blog_post_count' args: 'Posts'
  • blog_post_ids One2many → blog.post
    args: 'blog.post', 'blog_id', 'Blog Posts'
  • content Html
    sanitize=False translate=html_translate args: 'Content'
  • name Char
    required=True translate=True args: 'Blog Name'
  • sequence Integer
    default=_default_sequence args: 'Sequence'
  • subtitle Char
    translate=True args: 'Blog Subtitle'
Public methods (3)
  • 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)
  • active Boolean
    default=True args: 'Active'
  • author_avatar Binary
    readonly=False related='author_id.image_128' string='Avatar'
  • author_id Many2one → res.partner
    default=<expr> index='btree_not_null' args: 'res.partner', 'Author'
  • author_name Char
    readonly=False related='author_id.display_name' store=True string='Author Name'
  • blog_id Many2one → blog.blog
    default=<expr> index=True ondelete='cascade' required=True args: 'blog.blog', 'Blog'
  • content Html
    default=_default_content sanitize=False translate=html_translate args: 'Content'
  • create_date Datetime
    readonly=True args: 'Created on'
  • create_uid Many2one → res.users
    readonly=True args: 'res.users', 'Created by'
  • name Char
    default='' required=True translate=True args: 'Title'
  • recommended_next_post_id Many2one → blog.post
    help='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'
  • subtitle Char
    translate=True args: 'Sub Title'
  • tag_ids Many2many → blog.tag
    string='Tags' args: 'blog.tag'
  • teaser Text
    compute='_compute_teaser' inverse='_set_teaser' translate=True args: 'Teaser'
  • teaser_manual Text
    string='Teaser Content' translate=True
  • visits Integer
    copy=False default=0 readonly=True args: 'No of Views'
  • website_id Many2one
    readonly=True related='blog_id.website_id' store=True
  • write_date Datetime
    readonly=True args: 'Last Updated on'
  • write_uid Many2one → res.users
    readonly=True args: 'res.users', 'Last Contributor'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (4)
  • category_id Many2one → blog.tag.category
    index=True args: 'blog.tag.category', 'Category'
  • color Integer
    args: 'Color'
  • name Char
    required=True translate=True args: 'Name'
  • post_ids Many2many → blog.post
    string='Posts' args: 'blog.post'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True translate=True args: 'Name'
  • tag_ids One2many → blog.tag
    string='Tags' args: 'blog.tag', 'category_id'
Public methods (0)

No public methods.

New fields (1)
  • blog_post_ids One2many → blog.post
    string='Blog Posts' args: 'blog.post', 'author_id'
Public methods (0)

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_id Many2one → blog.post
    comodel_name='blog.post' index='btree_not_null' ondelete='cascade' readonly=True
Public methods (0)

No public methods.

New fields (2)
  • blog_post_ids Many2many → blog.post
    comodel_name='blog.post' compute='_compute_blog_post_statistics' string='Blog Posts'
  • visitor_blog_post_count Integer
    compute='_compute_blog_post_statistics' help='Total number of views on blog posts' string='Blog Post Views'
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…