From e5fb0208391095eba037d23f96b4e1af493db4d6 Mon Sep 17 00:00:00 2001 From: Florian Charlier Date: Wed, 8 Jun 2022 14:35:28 +0000 Subject: [PATCH] [IMP] website_slides: fix public views counter Changes in rules of session storage for visitors (04e97266) prevented the list of viewed slides to be updated for public viewers, ending in possibly unlimited counts. Fixed by touching the sessions, with a small performance improvement "en passant". See Odoo#86015 Task-2878900 closes odoo/odoo#93181 X-original-commit: 5b375d6c5e1f4a29add3976af7fd71600c7b4cda Signed-off-by: Julien Castiaux --- addons/website_slides/controllers/main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/website_slides/controllers/main.py b/addons/website_slides/controllers/main.py index 1ab6fb563fa..1d061c7678f 100644 --- a/addons/website_slides/controllers/main.py +++ b/addons/website_slides/controllers/main.py @@ -65,11 +65,11 @@ class WebsiteSlides(WebsiteProfile): def _set_viewed_slide(self, slide, quiz_attempts_inc=False): if request.env.user._is_public() or not slide.website_published or not slide.channel_id.is_member: - viewed_slides = request.session.setdefault('viewed_slides', list()) + viewed_slides = request.session.setdefault('viewed_slides', set()) if slide.id not in viewed_slides: if tools.sql.increment_field_skiplock(slide, 'public_views'): - viewed_slides.append(slide.id) - request.session['viewed_slides'] = viewed_slides + viewed_slides.add(slide.id) + request.session.touch() else: slide.action_set_viewed(quiz_attempts_inc=quiz_attempts_inc) return True