diff options
| author | Romain Derie <rde@odoo.com> | 2019-05-13 17:29:24 +0000 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2019-08-03 09:51:22 +0000 |
| commit | cc1d78a80b518bd5eaec7eb70d7bc14ec4c31275 (patch) | |
| tree | 9f5dff2b44804e14701e4fe7bc9603086df9af55 /addons/website_blog/models | |
| parent | f9c2716b3e76ce9bc36d87d69a37a897391c9cdb (diff) | |
[IMP] *: correctly read/write website_published
The `website_published` field from the website's mixins is basically a readonly
from `is_published` field.
On read, this field will simply read `is_published` and check if the record's
website_id is accessible (only for the multi mixin).
On write, it will always write on `is_published`.
This commit improves a few things:
- A lot of code was writting on website_published which was just then writting
on is_published. Writting directly on is_published makes more sense.
- Some backend fields would still reference `website_published` instead of
`is_published` which would just go through the related for no reason.
Plus, using `is_published` will make the field tooltip more accurate as we
are not in a website context ('Visible on current website' to 'Is Published')
- Filter and search on tree view were still using the `website_published`
related field, which is just a readonly when we are not in a frontend
context.
- Some create and write function would have security check on
`website_published` value but that was wrong as the user could bypass that by
simply writting on `is_published`. For the write method, check `is_published`
is more accurate as it will cover both case since `website_published` will
then call the write method on `is_published`
Diffstat (limited to 'addons/website_blog/models')
| -rw-r--r-- | addons/website_blog/models/website_blog.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/addons/website_blog/models/website_blog.py b/addons/website_blog/models/website_blog.py index 6bf40b32f63..6ec13d08370 100644 --- a/addons/website_blog/models/website_blog.py +++ b/addons/website_blog/models/website_blog.py @@ -194,7 +194,7 @@ class BlogPost(models.Model): blog_post._write(dict(post_date=blog_post.create_date)) # dont trigger inverse function def _check_for_publication(self, vals): - if vals.get('website_published'): + if vals.get('is_published'): for post in self: post.blog_id.message_post_with_view( 'website_blog.blog_post_template_new_post', @@ -214,9 +214,10 @@ class BlogPost(models.Model): result = True for post in self: copy_vals = dict(vals) - if ('website_published' in vals and 'published_date' not in vals and + published_in_vals = set(vals.keys()) & {'is_published', 'website_published'} + if (published_in_vals and 'published_date' not in vals and (not post.published_date or post.published_date <= fields.Datetime.now())): - copy_vals['published_date'] = vals['website_published'] and fields.Datetime.now() or False + copy_vals['published_date'] = vals[list(published_in_vals)[0]] and fields.Datetime.now() or False result &= super(BlogPost, self).write(copy_vals) self._check_for_publication(vals) return result |
