From d92e61e89f468c2db2fbd68b2f0d6b36c77f1065 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Fri, 25 Sep 2020 15:06:36 +0000 Subject: [FIX] tools.sql, website_*: increment counter with skip lock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit *blog, forum, slides Based on https://github.com/odoo/odoo/pull/48552#discussion_r440061218 suggestion Add a new method 'increment_skip_lock' in tools.sql to allow to easily increment a specific field of 1 if the record is not locked. The method return boolean if at least 1 record has been incremented. closes odoo/odoo#58534 Signed-off-by: Jérémy Kersten (jke) --- addons/website_blog/controllers/main.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) (limited to 'addons/website_blog') diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py index 17968fb81a9..2249ab7c5a3 100644 --- a/addons/website_blog/controllers/main.py +++ b/addons/website_blog/controllers/main.py @@ -15,6 +15,7 @@ from odoo.http import request from odoo.osv import expression from odoo.tools import html2plaintext from odoo.tools.misc import get_lang +from odoo.tools import sql class WebsiteBlog(http.Controller): @@ -272,17 +273,11 @@ class WebsiteBlog(http.Controller): response = request.render("website_blog.blog_post_complete", values) if blog_post.id not in request.session.get('posts_viewed', []): - if not request.session.get('posts_viewed'): - request.session['posts_viewed'] = [] - - request.session['posts_viewed'].append(blog_post.id) - request.session.modified = True - - # Increase counter - blog_post.sudo()._write({ - 'visits': blog_post.visits + 1, - 'write_date': blog_post.write_date, - }) + if sql.increment_field_skiplock(blog_post, 'visits'): + if not request.session.get('posts_viewed'): + request.session['posts_viewed'] = [] + request.session['posts_viewed'].append(blog_post.id) + request.session.modified = True return response @http.route('/blog//post/new', type='http', auth="user", website=True) -- cgit v1.2.3