[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:
committed by
jem-odoo
parent
54261c4e3e
commit
55f61d95bf
@@ -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)])
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user