diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py index abf8a6628bf..bf77c632e0a 100644 --- a/addons/website_blog/controllers/main.py +++ b/addons/website_blog/controllers/main.py @@ -19,7 +19,6 @@ # ############################################################################## -import random import werkzeug from datetime import datetime @@ -195,12 +194,13 @@ class WebsiteBlog(http.Controller): response = request.website.render("website_blog.blog_post_complete", values) response.set_cookie('visited_blogs', ','.join(map(str, visited_ids))) - # Increase counter and ranking ratio for order - d = datetime.now() - datetime.strptime(blog_post.create_date, "%Y-%m-%d %H:%M:%S") - blog_post_obj.write(cr, SUPERUSER_ID, [blog_post.id], { - 'visits': blog_post.visits+1, - 'ranking': blog_post.visits * (0.5+random.random()) / max(3, d.days) - },context=context) + request.session[request.session_id] = request.session.get(request.session_id, []) + if not (blog_post.id in request.session[request.session_id]): + request.session[request.session_id].append(blog_post.id) + # Increase counter + blog_post_obj.write(cr, SUPERUSER_ID, [blog_post.id], { + 'visits': blog_post.visits+1, + },context=context) return response def _blog_post_message(self, user, blog_post_id=0, **post): diff --git a/addons/website_blog/models/website_blog.py b/addons/website_blog/models/website_blog.py index 5d6ac65b897..2d1d4ac6030 100644 --- a/addons/website_blog/models/website_blog.py +++ b/addons/website_blog/models/website_blog.py @@ -19,6 +19,8 @@ # ############################################################################## +import random +from datetime import datetime from openerp import tools from openerp import SUPERUSER_ID @@ -58,6 +60,14 @@ class BlogPost(osv.Model): _description = "Blog Post" _inherit = ['mail.thread', 'website.seo.metadata'] _order = 'id DESC' + + def _compute_ranking(self, cr, uid, ids, name, arg, context=None): + res = {} + for blog_post in self.browse(cr, uid, ids, context=context): + d = datetime.now() - datetime.strptime(blog_post.create_date, tools.DEFAULT_SERVER_DATETIME_FORMAT) + res[blog_post.id] = blog_post.visits * (0.5+random.random()) / max(3, d.days) + return res + _columns = { 'name': fields.char('Title', required=True, translate=True), 'sub_title' : fields.char('Sub Title', translate=True), @@ -100,7 +110,7 @@ class BlogPost(osv.Model): select=True, readonly=True, ), 'visits': fields.integer('No of Views', readonly=True), - 'ranking': fields.float('Ranking', readonly=True), + 'ranking': fields.function(_compute_ranking, string='Ranking', type='float'), } _defaults = { 'website_published': False,