Repository
odoo/odoo · module folder
Module version
1.1
Category
Website/Website
Folder size
8.61 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
https://www.odoo.com/app/blog
Last tracking update
2026-08-15 22:44:14
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Raphael Collet, Thibault Delavallée, Mohammed Shekha, Odoo Translation Bot, Nicolas Lempereur, Aaron Bohy, Géry Debongnie, qsm-odoo, Julien Castiaux, Xavier-Do, Sébastien Theys, Julien Mougenot, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, Benjamin Vray, Nicolas Bayet, luvi, Hubert Van De Walle, Victor Piryns (pivi), Robin Lejeune (role), Louis (loco), Dylan Kiss (dyki), Brieuc-brd, divy-odoo, Moises Lopez - https://www.vauxoo.com/, visp-odoo, Maryam Kia, Mehdi Outagant (MOU), Serge Bayet (seba), Julien Carion (juca), Chrysanthe (chgo), Junqi Wu, Sanjay Sharma, mano-odoo, Sébastien (blse), paru-odoo, khsr-odoo, Pierre Pulinckx, Bastien PIERRE, Krzysztof Magusiak (krma), rusp-odoo, aans-odoo, Augustin (duau), Serhii Rubanskyi, Davide Bonetto, Alessandro Lupo, Benoit Socias (bso), Serge Bayet, saurabh, vega-odoo, chpa-odoo, panj-odoo, Nuno
Odoo dependencies
Python dependencies
geoip2
System dependencies
None
Required by
test_website_modules
Description

Code Analysis

Views touched (85)
XML IDNameModelTypeStatus
blog_blog_view_search blog.blog.search blog.blog search New
blog_feed blog_feed ir.ui.view qweb New
blog_post_content Blog post content ir.ui.view qweb New
blog_post_info Blog Post Info ir.ui.view qweb New
blog_post_short Blog Posts ir.ui.view qweb New
blog_post_sidebar Sidebar - Blog Post 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_cards_design 'Cards' Design 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_list_view List View 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_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_tags_display Tags ir.ui.view qweb Inherits website_blog.blog_post_sidebar
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_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_stats Comments/Views Stats ir.ui.view qweb Inherits website_blog.posts_loop
opt_posts_loop_show_teaser Teaser & Tags ir.ui.view qweb Inherits website_blog.posts_loop
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_teaser post_teaser ir.ui.view qweb New
posts_loop Posts List ir.ui.view qweb New
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_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_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
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 website
/blog/<model("blog.blog"):blog>/post/<model("blog.post"):blog_post> WebsiteBlog.old_blog_post public http ALL website
Models touched (6)

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 (20)
  • 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'
  • post_date Datetime
    compute='_compute_post_date' help='The blog post will be visible for your visitors as of this date on the website if it is set as published.' inverse='_set_post_date' store=True args: 'Publishing date'
  • published_date Datetime
    args: 'Published Date'
  • 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
  • website_message_ids One2many
    domain=<expr>
  • write_date Datetime
    readonly=True args: 'Last Updated on'
  • write_uid Many2one → res.users
    readonly=True args: 'res.users', 'Last Contributor'
Public methods (3)
  • copy_data(self, default=None)
  • 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 (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

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…