[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 <juc@odoo.com>
This commit is contained in:
Florian Charlier
2022-06-09 14:17:49 +02:00
parent 457f1400a2
commit e5fb020839
+3 -3
View File
@@ -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