From fa0b098900573f37740cb41141307fee03fb5533 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Thu, 28 Jan 2021 11:05:28 +0000 Subject: [PATCH] [FIX] website_blog: Traceback on archived blog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Steps to reproduce the bug: - Create a blogpost in the the blog 'travel - Archive the blog 'travel' - Open the blogpost Bug: A traceback was raised opw:2444406 closes odoo/odoo#65576 X-original-commit: 196d96ef8eaf8aa06e16c9768ed595fca1c315ff Signed-off-by: Simon Goffin (sig) Signed-off-by: Jérémy Kersten (jke) --- addons/website_blog/controllers/main.py | 2 +- addons/website_blog/models/website_blog.py | 5 ++++- addons/website_blog/security/website_blog_security.xml | 7 +++++++ addons/website_blog/views/website_blog_views.xml | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py index c994d5014fa..cca44be1b2c 100644 --- a/addons/website_blog/controllers/main.py +++ b/addons/website_blog/controllers/main.py @@ -116,7 +116,7 @@ class WebsiteBlog(http.Controller): step=self._blog_post_per_page, ) - all_tags = blog and blogs.all_tags()[blog.id] or blogs.all_tags(join=True) + all_tags = blogs.all_tags(join=True) if not blog else blogs.all_tags().get(blog.id, request.env['blog.tag']) tag_category = sorted(all_tags.mapped('category_id'), key=lambda category: category.name.upper()) other_tags = sorted(all_tags.filtered(lambda x: not x.category_id), key=lambda tag: tag.name.upper()) diff --git a/addons/website_blog/models/website_blog.py b/addons/website_blog/models/website_blog.py index 733bafc3a7f..4341966caf7 100644 --- a/addons/website_blog/models/website_blog.py +++ b/addons/website_blog/models/website_blog.py @@ -185,7 +185,7 @@ class BlogPost(models.Model): def _check_for_publication(self, vals): if vals.get('is_published'): - for post in self: + for post in self.filtered(lambda p: p.active): post.blog_id.message_post_with_view( 'website_blog.blog_post_template_new_post', subject=post.name, @@ -202,6 +202,9 @@ class BlogPost(models.Model): def write(self, vals): result = True + # archiving a blog post, unpublished the blog post + if 'active' in vals and not vals['active']: + vals['is_published'] = False for post in self: copy_vals = dict(vals) published_in_vals = set(vals.keys()) & {'is_published', 'website_published'} diff --git a/addons/website_blog/security/website_blog_security.xml b/addons/website_blog/security/website_blog_security.xml index 79cfbbe6074..7544dc75338 100644 --- a/addons/website_blog/security/website_blog_security.xml +++ b/addons/website_blog/security/website_blog_security.xml @@ -8,4 +8,11 @@ + + Blog: active only + + [('active', '=', True)] + + + diff --git a/addons/website_blog/views/website_blog_views.xml b/addons/website_blog/views/website_blog_views.xml index 15605473167..c28c6cb6325 100644 --- a/addons/website_blog/views/website_blog_views.xml +++ b/addons/website_blog/views/website_blog_views.xml @@ -62,7 +62,7 @@
-
+