diff --git a/lms/djangoapps/open_ended_grading/staff_grading_service.py b/lms/djangoapps/open_ended_grading/staff_grading_service.py index dce62af596..4fb8a11661 100644 --- a/lms/djangoapps/open_ended_grading/staff_grading_service.py +++ b/lms/djangoapps/open_ended_grading/staff_grading_service.py @@ -9,7 +9,6 @@ from django.conf import settings from django.http import HttpResponse, Http404 from django.utils.translation import ugettext as _ -from xmodule.course_module import CourseDescriptor from xmodule.modulestore.locations import SlashSeparatedCourseKey from xmodule.open_ended_grading_classes.grading_service_module import GradingService, GradingServiceError from xmodule.modulestore.django import ModuleI18nService @@ -116,7 +115,7 @@ class StaffGradingService(GradingService): Raises: GradingServiceError: something went wrong with the connection. """ - params = {'course_id': course_id, 'grader_id': grader_id} + params = {'course_id': course_id.to_deprecated_string(), 'grader_id': grader_id} result = self.get(self.get_problem_list_url, params) tags = [u'course_id:{}'.format(course_id)] self._record_result('get_problem_list', result, tags) @@ -148,7 +147,7 @@ class StaffGradingService(GradingService): self.get( self.get_next_url, params={ - 'location': location, + 'location': location.to_deprecated_string(), 'grader_id': grader_id } ) @@ -170,7 +169,7 @@ class StaffGradingService(GradingService): Raises: GradingServiceError if there's a problem connecting. """ - data = {'course_id': course_id, + data = {'course_id': course_id.to_deprecated_string(), 'submission_id': submission_id, 'score': score, 'feedback': feedback, @@ -186,7 +185,7 @@ class StaffGradingService(GradingService): return result def get_notifications(self, course_id): - params = {'course_id': course_id} + params = {'course_id': course_id.to_deprecated_string()} result = self.get(self.get_notifications_url, params) tags = [ u'course_id:{}'.format(course_id), @@ -274,7 +273,7 @@ def get_next(request, course_id): ', '.join(missing))) grader_id = unique_id_for_user(request.user) p = request.POST - location = p['location'] + location = course_key.make_usage_key_from_deprecated_string(p['location']) return HttpResponse(json.dumps(_get_next(course_key, grader_id, location)), mimetype="application/json") @@ -400,7 +399,7 @@ def save_grade(request, course_id): grader_id = unique_id_for_user(request.user) - location = p['location'] + location = course_key.make_usage_key_from_deprecated_string(p['location']) try: result = staff_grading_service().save_grade(course_key, diff --git a/lms/djangoapps/open_ended_grading/tests.py b/lms/djangoapps/open_ended_grading/tests.py index 79cc972b1b..43ba2aeab6 100644 --- a/lms/djangoapps/open_ended_grading/tests.py +++ b/lms/djangoapps/open_ended_grading/tests.py @@ -109,13 +109,13 @@ class TestStaffGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): self.student = 'view@test.com' self.instructor = 'view2@test.com' self.password = 'foo' - self.location = 'TestLocation' self.create_account('u1', self.student, self.password) self.create_account('u2', self.instructor, self.password) self.activate_user(self.student) self.activate_user(self.instructor) self.course_id = SlashSeparatedCourseKey("edX", "toy", "2012_Fall") + self.location_string = self.course_id.make_usage_key('html', 'TestLocation').to_deprecated_string() self.toy = modulestore().get_course(self.course_id) make_instructor(self.toy, self.instructor) @@ -140,7 +140,7 @@ class TestStaffGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): self.login(self.instructor, self.password) url = reverse('staff_grading_get_next', kwargs={'course_id': self.course_id.to_deprecated_string()}) - data = {'location': self.location} + data = {'location': self.location_string} response = check_for_post_code(self, 200, url, data) @@ -165,7 +165,7 @@ class TestStaffGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): data = {'score': '12', 'feedback': 'great!', 'submission_id': '123', - 'location': self.location, + 'location': self.location_string, 'submission_flagged': "true", 'rubric_scores[]': ['1', '2']} if skip: @@ -227,7 +227,7 @@ class TestStaffGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): 'score': '12', 'feedback': '', 'submission_id': '123', - 'location': self.location, + 'location': self.location_string, 'submission_flagged': "false", 'rubric_scores[]': ['1', '2'] } @@ -262,13 +262,13 @@ class TestPeerGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): self.student = 'view@test.com' self.instructor = 'view2@test.com' self.password = 'foo' - self.location = 'TestLocation' self.create_account('u1', self.student, self.password) self.create_account('u2', self.instructor, self.password) self.activate_user(self.student) self.activate_user(self.instructor) self.course_id = SlashSeparatedCourseKey("edX", "toy", "2012_Fall") + self.location_string = self.course_id.make_usage_key('html', 'TestLocation').to_deprecated_string() self.toy = modulestore().get_course(self.course_id) location = "i4x://edX/toy/peergrading/init" field_data = DictFieldData({'data': "", 'location': location, 'category':'peergrading'}) @@ -292,7 +292,7 @@ class TestPeerGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): self.logout() def test_get_next_submission_success(self): - data = {'location': self.location} + data = {'location': self.location_string} response = self.peer_module.get_next_submission(data) content = response @@ -312,7 +312,7 @@ class TestPeerGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): def test_save_grade_success(self): data = { 'rubric_scores[]': [0, 0], - 'location': self.location, + 'location': self.location_string, 'submission_id': 1, 'submission_key': 'fake key', 'score': 2, @@ -342,7 +342,7 @@ class TestPeerGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): self.assertTrue(d['error'].find('Missing required keys:') > -1) def test_is_calibrated_success(self): - data = {'location': self.location} + data = {'location': self.location_string} response = self.peer_module.is_student_calibrated(data) self.assertTrue(response['success']) @@ -355,7 +355,7 @@ class TestPeerGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): self.assertFalse('calibrated' in response) def test_show_calibration_essay_success(self): - data = {'location': self.location} + data = {'location': self.location_string} response = self.peer_module.show_calibration_essay(data) @@ -376,7 +376,7 @@ class TestPeerGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): def test_save_calibration_essay_success(self): data = { 'rubric_scores[]': [0, 0], - 'location': self.location, + 'location': self.location_string, 'submission_id': 1, 'submission_key': 'fake key', 'score': 2, @@ -410,7 +410,7 @@ class TestPeerGradingService(ModuleStoreTestCase, LoginEnrollmentTestCase): """ data = { 'rubric_scores[]': [0, 0], - 'location': self.location, + 'location': self.location_string, 'submission_id': 1, 'submission_key': 'fake key', 'score': 2, diff --git a/lms/djangoapps/open_ended_grading/views.py b/lms/djangoapps/open_ended_grading/views.py index 5bc6932fae..508c07eac5 100644 --- a/lms/djangoapps/open_ended_grading/views.py +++ b/lms/djangoapps/open_ended_grading/views.py @@ -1,11 +1,9 @@ import logging -from django.conf import settings from django.views.decorators.cache import cache_control from edxmako.shortcuts import render_to_response from django.core.urlresolvers import reverse -from student.models import unique_id_for_user from courseware.courses import get_course_with_access from xmodule.open_ended_grading_classes.grading_service_module import GradingServiceError @@ -20,11 +18,11 @@ from xmodule.modulestore import SlashSeparatedCourseKey from xmodule.modulestore.exceptions import NoPathToItem from django.http import HttpResponse, Http404, HttpResponseRedirect -from edxmako.shortcuts import render_to_string from django.utils.translation import ugettext as _ -from open_ended_grading.utils import (STAFF_ERROR_MESSAGE, STUDENT_ERROR_MESSAGE, - StudentProblemList, generate_problem_url, create_controller_query_service) +from open_ended_grading.utils import ( + STAFF_ERROR_MESSAGE, StudentProblemList, generate_problem_url, create_controller_query_service +) log = logging.getLogger(__name__) @@ -68,9 +66,10 @@ def staff_grading(request, course_id): """ Show the instructor grading interface. """ - course = get_course_with_access(request.user, 'staff', course_id) + course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) + course = get_course_with_access(request.user, 'staff', course_key) - ajax_url = _reverse_with_slash('staff_grading', course_id) + ajax_url = _reverse_with_slash('staff_grading', course_key) return render_to_response('instructor/staff_grading.html', { 'course': course, @@ -118,9 +117,9 @@ def peer_grading(request, course_id): When a student clicks on the "peer grading" button in the open ended interface, link them to a peer grading xmodule in the course. ''' - + course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) #Get the current course - course = get_course_with_access(request.user, 'load', course_id) + course = get_course_with_access(request.user, 'load', course_key) found_module, problem_url = find_peer_grading_module(course) if not found_module: @@ -187,13 +186,11 @@ def flagged_problem_list(request, course_id): ''' course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) course = get_course_with_access(request.user, 'staff', course_key) - student_id = unique_id_for_user(request.user) # call problem list service success = False error_text = "" problem_list = [] - base_course_url = reverse('courses') # Make a service that can query edX ORA. controller_qs = create_controller_query_service()