From adbfdccee8cdb7127600eefe4ae7f2ace37a1c6e Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Fri, 9 Aug 2013 08:18:23 -0400 Subject: [PATCH] Prevent student from resetting problem unless they have completed required peer grading. Grant an exemption if there is no available peer grading. --- .../combined_open_ended_modulev1.py | 7 +++++-- .../open_ended_grading_classes/peer_grading_service.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py b/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py index 19c9aeb6df..c0a19ae2ab 100644 --- a/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py +++ b/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py @@ -516,6 +516,7 @@ class CombinedOpenEndedV1Module(): count_graded = response['count_graded'] count_required = response['count_required'] student_sub_count = response['student_sub_count'] + count_available = response['count_available'] success = True except: # This is a dev_facing_error @@ -524,7 +525,7 @@ class CombinedOpenEndedV1Module(): # This is a student_facing_error error_message = "Could not contact the graders. Please notify course staff." return success, allowed_to_submit, error_message - if count_graded >= count_required: + if count_graded >= count_required or count_available==0: return success, allowed_to_submit, "" else: allowed_to_submit = False @@ -687,7 +688,9 @@ class CombinedOpenEndedV1Module(): if self.state != self.DONE: if not self.ready_to_reset: return self.out_of_sync_error(data) - + success, can_reset, error = self.check_if_student_has_done_needed_grading() + if not can_reset: + return {'error' : error, 'success' : False} if self.student_attempts >= self.max_attempts-1: if self.student_attempts==self.max_attempts-1: self.student_attempts +=1 diff --git a/common/lib/xmodule/xmodule/open_ended_grading_classes/peer_grading_service.py b/common/lib/xmodule/xmodule/open_ended_grading_classes/peer_grading_service.py index 3c25b301ab..0e5c9cdda1 100644 --- a/common/lib/xmodule/xmodule/open_ended_grading_classes/peer_grading_service.py +++ b/common/lib/xmodule/xmodule/open_ended_grading_classes/peer_grading_service.py @@ -124,4 +124,4 @@ class MockPeerGradingService(object): ]} def get_data_for_location(self, problem_location, student_id): - return {"version": 1, "count_graded": 3, "count_required": 3, "success": True, "student_sub_count": 1} + return {"version": 1, "count_graded": 3, "count_required": 3, "success": True, "student_sub_count": 1, 'submissions_available' : 0}