84 lines
2.8 KiB
Python
84 lines
2.8 KiB
Python
import json
|
|
import logging
|
|
import requests
|
|
from requests.exceptions import RequestException, ConnectionError, HTTPError
|
|
import sys
|
|
from xmodule.grading_service_module import GradingService, GradingServiceError
|
|
|
|
from django.conf import settings
|
|
from django.http import HttpResponse, Http404
|
|
from xmodule.x_module import ModuleSystem
|
|
from mitxmako.shortcuts import render_to_string
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
class ControllerQueryService(GradingService):
|
|
"""
|
|
Interface to staff grading backend.
|
|
"""
|
|
def __init__(self, config):
|
|
config['system'] = ModuleSystem(None, None, None, render_to_string, None)
|
|
super(ControllerQueryService, self).__init__(config)
|
|
self.check_eta_url = self.url + '/get_submission_eta/'
|
|
self.is_unique_url = self.url + '/is_name_unique/'
|
|
self.combined_notifications_url = self.url + '/combined_notifications/'
|
|
self.grading_status_list_url = self.url + '/get_grading_status_list/'
|
|
self.flagged_problem_list_url = self.url + '/get_flagged_problem_list/'
|
|
self.take_action_on_flags_url = self.url + '/take_action_on_flags/'
|
|
|
|
def check_if_name_is_unique(self, location, problem_id, course_id):
|
|
params = {
|
|
'course_id': course_id,
|
|
'location': location,
|
|
'problem_id': problem_id
|
|
}
|
|
response = self.get(self.is_unique_url, params)
|
|
return response
|
|
|
|
def check_for_eta(self, location):
|
|
params = {
|
|
'location': location,
|
|
}
|
|
response = self.get(self.check_eta_url, params)
|
|
return response
|
|
|
|
def check_combined_notifications(self, course_id, student_id, user_is_staff, last_time_viewed):
|
|
params = {
|
|
'student_id': student_id,
|
|
'course_id': course_id,
|
|
'user_is_staff': user_is_staff,
|
|
'last_time_viewed': last_time_viewed,
|
|
}
|
|
log.debug(self.combined_notifications_url)
|
|
response = self.get(self.combined_notifications_url, params)
|
|
return response
|
|
|
|
def get_grading_status_list(self, course_id, student_id):
|
|
params = {
|
|
'student_id': student_id,
|
|
'course_id': course_id,
|
|
}
|
|
|
|
response = self.get(self.grading_status_list_url, params)
|
|
return response
|
|
|
|
def get_flagged_problem_list(self, course_id):
|
|
params = {
|
|
'course_id': course_id,
|
|
}
|
|
|
|
response = self.get(self.flagged_problem_list_url, params)
|
|
return response
|
|
|
|
def take_action_on_flags(self, course_id, student_id, submission_id, action_type):
|
|
params = {
|
|
'course_id': course_id,
|
|
'student_id': student_id,
|
|
'submission_id': submission_id,
|
|
'action_type': action_type
|
|
}
|
|
|
|
response = self.post(self.take_action_on_flags_url, params)
|
|
return response
|