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
|
|
|