summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGoffin Simon <sig@odoo.com>2021-01-28 11:05:28 +0000
committerGoffin Simon <sig@odoo.com>2021-02-04 08:49:28 +0000
commit196d96ef8eaf8aa06e16c9768ed595fca1c315ff (patch)
treea4086ae0f3af5686ad95f41f3e33ca67bc3b428d
parent41ac5b0ea7429f11b554a822287b37d635103a34 (diff)
[FIX] website_blog: Traceback on archived blog
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#65204 Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
-rw-r--r--addons/website_blog/controllers/main.py2
-rw-r--r--addons/website_blog/models/website_blog.py5
-rw-r--r--addons/website_blog/security/website_blog_security.xml7
-rw-r--r--addons/website_blog/views/website_blog_views.xml2
4 files changed, 13 insertions, 3 deletions
diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py
index 2249ab7c5a3..a54e3550175 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 @@
<field name="groups" eval="[(4, ref('base.group_public')), (4, ref('base.group_portal'))]"/>
</record>
+ <record model="ir.rule" id="website_blog_public">
+ <field name="name">Blog: active only</field>
+ <field name="model_id" ref="model_blog_blog"/>
+ <field name="domain_force">[('active', '=', True)]</field>
+ <field name="groups" eval="[(4, ref('base.group_public')), (4, ref('base.group_portal'))]"/>
+ </record>
+
</odoo>
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 @@
<field name="arch" type="xml">
<form string="Blog Post">
<sheet>
- <div class="oe_button_box" name="button_box">
+ <div class="oe_button_box" name="button_box" attrs="{'invisible': [('active', '=', False)]}">
<field name="is_published" widget="website_redirect_button"/>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>