[FIX] website_slides: avoid access error when submitting quiz

Purpose
=======

The quiz_submit method and the action to set the quiz done both use
the slide_partner relation that has to be accessed in sudo mode.

Task-1941250
This commit is contained in:
Aurélien Warnon
2019-03-15 20:38:58 +00:00
committed by jem-odoo
parent 54261c4e3e
commit 55f61d95bf
2 changed files with 4 additions and 3 deletions
+1 -1
View File
@@ -644,7 +644,7 @@ class WebsiteSlides(WebsiteProfile):
return fetch_res
slide = fetch_res['slide']
if slide.user_membership_id.completed:
if slide.user_membership_id.sudo().completed:
return {'error': 'slide_quiz_done'}
all_questions = request.env['slide.question'].sudo().search([('slide_id', '=', slide.id)])
+3 -2
View File
@@ -523,14 +523,15 @@ class Slide(models.Model):
points = 0
for slide in self:
if not slide.user_membership_id or slide.user_membership_id.completed or not slide.user_membership_id.quiz_attempts_count:
user_membership_sudo = slide.user_membership_id.sudo()
if not user_membership_sudo or user_membership_sudo.completed or not user_membership_sudo.quiz_attempts_count:
continue
gains = [slide.quiz_first_attempt_reward,
slide.quiz_second_attempt_reward,
slide.quiz_third_attempt_reward,
slide.quiz_fourth_attempt_reward]
points += gains[slide.user_membership_id.quiz_attempts_count-1] if slide.user_membership_id.quiz_attempts_count <= len(gains) else gains[-1]
points += gains[user_membership_sudo.quiz_attempts_count - 1] if user_membership_sudo.quiz_attempts_count <= len(gains) else gains[-1]
return self.env.user.sudo().add_karma(points)