diff options
| author | Goffin Simon <sig@odoo.com> | 2021-01-28 11:05:28 +0000 |
|---|---|---|
| committer | Goffin Simon <sig@odoo.com> | 2021-02-04 08:49:28 +0000 |
| commit | 196d96ef8eaf8aa06e16c9768ed595fca1c315ff (patch) | |
| tree | a4086ae0f3af5686ad95f41f3e33ca67bc3b428d | |
| parent | 41ac5b0ea7429f11b554a822287b37d635103a34 (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.py | 2 | ||||
| -rw-r--r-- | addons/website_blog/models/website_blog.py | 5 | ||||
| -rw-r--r-- | addons/website_blog/security/website_blog_security.xml | 7 | ||||
| -rw-r--r-- | 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 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)]}"/> |
