Commit c1583dbb by Vik Paruchuri

Properly load javascript, fix templates to work with xmodule, modify AJAX handlers

parent c2f64465
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
# and message container when they are empty # and message container when they are empty
# Can (and should be) expanded upon when our problem list # Can (and should be) expanded upon when our problem list
# becomes more sophisticated # becomes more sophisticated
class PeerGrading class @PeerGrading
constructor: () -> constructor: (element) ->
@peer_grading_container = $('.peer-grading') @peer_grading_container = $('.peer-grading')
@peer_grading_outer_container = $('.peer-grading-container') @peer_grading_outer_container = $('.peer-grading-container')
@ajax_url = peer_grading_container.data('ajax-url') @ajax_url = @peer_grading_container.data('ajax-url')
@error_container = $('.error-container') @error_container = $('.error-container')
@error_container.toggle(not @error_container.is(':empty')) @error_container.toggle(not @error_container.is(':empty'))
...@@ -14,7 +14,7 @@ class PeerGrading ...@@ -14,7 +14,7 @@ class PeerGrading
@message_container.toggle(not @message_container.is(':empty')) @message_container.toggle(not @message_container.is(':empty'))
@problem_button = $('.problem-button') @problem_button = $('.problem-button')
@problem_button.click show_results @problem_button.click @show_results
@problem_list = $('.problem-list') @problem_list = $('.problem-list')
@construct_progress_bar() @construct_progress_bar()
...@@ -35,7 +35,7 @@ class PeerGrading ...@@ -35,7 +35,7 @@ class PeerGrading
$.postWithPrefix "#{@ajax_url}problem", data, (response) => $.postWithPrefix "#{@ajax_url}problem", data, (response) =>
if response.success if response.success
@peer_grading_outer_container.after(response.html).remove() @peer_grading_outer_container.after(response.html).remove()
backend = new PeerGradingProblemBackend(@ajax_url, false)
new PeerGradingProblem(backend)
else else
@gentle_alert response.error @gentle_alert response.error
\ No newline at end of file
$(document).ready(() -> new PeerGrading())
...@@ -68,7 +68,6 @@ class PeerGradingModule(XModule): ...@@ -68,7 +68,6 @@ class PeerGradingModule(XModule):
system.set('location', location) system.set('location', location)
self.system = system self.system = system
self.peer_gs = peer_grading_service() self.peer_gs = peer_grading_service()
log.debug(self.system)
self.use_for_single_location = self.metadata.get('use_for_single_location', USE_FOR_SINGLE_LOCATION) self.use_for_single_location = self.metadata.get('use_for_single_location', USE_FOR_SINGLE_LOCATION)
if isinstance(self.use_for_single_location, basestring): if isinstance(self.use_for_single_location, basestring):
...@@ -108,7 +107,7 @@ class PeerGradingModule(XModule): ...@@ -108,7 +107,7 @@ class PeerGradingModule(XModule):
Needs to be implemented by child modules. Handles AJAX events. Needs to be implemented by child modules. Handles AJAX events.
@return: @return:
""" """
log.debug(get)
handlers = { handlers = {
'get_next_submission': self.get_next_submission, 'get_next_submission': self.get_next_submission,
'show_calibration_essay': self.show_calibration_essay, 'show_calibration_essay': self.show_calibration_essay,
...@@ -123,6 +122,8 @@ class PeerGradingModule(XModule): ...@@ -123,6 +122,8 @@ class PeerGradingModule(XModule):
d = handlers[dispatch](get) d = handlers[dispatch](get)
log.debug(d)
return json.dumps(d, cls=ComplexEncoder) return json.dumps(d, cls=ComplexEncoder)
def get_progress(self): def get_progress(self):
...@@ -149,14 +150,12 @@ class PeerGradingModule(XModule): ...@@ -149,14 +150,12 @@ class PeerGradingModule(XModule):
'error': if success is False, will have an error message with more info. 'error': if success is False, will have an error message with more info.
""" """
_check_post(request)
required = set(['location']) required = set(['location'])
success, message = _check_required(request, required) success, message = self._check_required(get, required)
if not success: if not success:
return _err_response(message) return _err_response(message)
grader_id = unique_id_for_user(request.user) grader_id = self.system.anonymous_student_id
p = request.POST location = get['location']
location = p['location']
try: try:
response = self.peer_gs.get_next_submission(location, grader_id) response = self.peer_gs.get_next_submission(location, grader_id)
...@@ -183,20 +182,20 @@ class PeerGradingModule(XModule): ...@@ -183,20 +182,20 @@ class PeerGradingModule(XModule):
success: bool indicating whether the save was a success success: bool indicating whether the save was a success
error: if there was an error in the submission, this is the error message error: if there was an error in the submission, this is the error message
""" """
_check_post(request)
required = set(['location', 'submission_id', 'submission_key', 'score', 'feedback', 'rubric_scores[]', 'submission_flagged']) required = set(['location', 'submission_id', 'submission_key', 'score', 'feedback', 'rubric_scores[]', 'submission_flagged'])
success, message = _check_required(request, required) success, message = self._check_required(get, required)
if not success: if not success:
return _err_response(message) return _err_response(message)
grader_id = unique_id_for_user(request.user) grader_id = self.system.anonymous_student_id
p = request.POST
location = p['location'] location = get['location']
submission_id = p['submission_id'] submission_id = get['submission_id']
score = p['score'] score = get['score']
feedback = p['feedback'] feedback = get['feedback']
submission_key = p['submission_key'] submission_key = get['submission_key']
rubric_scores = p.getlist('rubric_scores[]') rubric_scores = get['rubric_scores']
submission_flagged = p['submission_flagged'] submission_flagged = get['submission_flagged']
try: try:
response = self.peer_gs.save_grade(location, grader_id, submission_id, response = self.peer_gs.save_grade(location, grader_id, submission_id,
score, feedback, submission_key, rubric_scores, submission_flagged) score, feedback, submission_key, rubric_scores, submission_flagged)
...@@ -227,14 +226,14 @@ class PeerGradingModule(XModule): ...@@ -227,14 +226,14 @@ class PeerGradingModule(XModule):
total_calibrated_on_so_far - the number of calibration essays for this problem total_calibrated_on_so_far - the number of calibration essays for this problem
that this grader has graded that this grader has graded
""" """
_check_post(request)
required = set(['location']) required = set(['location'])
success, message = _check_required(request, required) success, message = self._check_required(get, required)
if not success: if not success:
return _err_response(message) return _err_response(message)
grader_id = unique_id_for_user(request.user) grader_id = self.system.anonymous_student_id
p = request.POST
location = p['location'] location = get['location']
try: try:
response = self.peer_gs.is_student_calibrated(location, grader_id) response = self.peer_gs.is_student_calibrated(location, grader_id)
...@@ -268,16 +267,15 @@ class PeerGradingModule(XModule): ...@@ -268,16 +267,15 @@ class PeerGradingModule(XModule):
'error': if success is False, will have an error message with more info. 'error': if success is False, will have an error message with more info.
""" """
_check_post(request)
required = set(['location']) required = set(['location'])
success, message = _check_required(request, required) success, message = self._check_required(get, required)
if not success: if not success:
return _err_response(message) return _err_response(message)
grader_id = unique_id_for_user(request.user) grader_id = self.system.anonymous_student_id
p = request.POST
location = p['location'] location = get['location']
try: try:
response = self.peer_gs.show_calibration_essay(location, grader_id) response = self.peer_gs.show_calibration_essay(location, grader_id)
return HttpResponse(response, mimetype="application/json") return HttpResponse(response, mimetype="application/json")
...@@ -311,20 +309,19 @@ class PeerGradingModule(XModule): ...@@ -311,20 +309,19 @@ class PeerGradingModule(XModule):
actual_score: the score that the instructor gave to this calibration essay actual_score: the score that the instructor gave to this calibration essay
""" """
_check_post(request)
required = set(['location', 'submission_id', 'submission_key', 'score', 'feedback', 'rubric_scores[]']) required = set(['location', 'submission_id', 'submission_key', 'score', 'feedback', 'rubric_scores[]'])
success, message = _check_required(request, required) success, message = self._check_required(get, required)
if not success: if not success:
return _err_response(message) return _err_response(message)
grader_id = unique_id_for_user(request.user) grader_id = self.system.anonymous_student_id
p = request.POST
location = p['location'] location = get['location']
calibration_essay_id = p['submission_id'] calibration_essay_id = get['submission_id']
submission_key = p['submission_key'] submission_key = get['submission_key']
score = p['score'] score = get['score']
feedback = p['feedback'] feedback = get['feedback']
rubric_scores = p.getlist('rubric_scores[]') rubric_scores = get['rubric_scores']
try: try:
response = self.peer_gs.save_calibration_essay(location, grader_id, calibration_essay_id, response = self.peer_gs.save_calibration_essay(location, grader_id, calibration_essay_id,
......
...@@ -48,6 +48,7 @@ class PeerGradingService(): ...@@ -48,6 +48,7 @@ class PeerGradingService():
'rubric_scores': rubric_scores, 'rubric_scores': rubric_scores,
'rubric_scores_complete': True, 'rubric_scores_complete': True,
'submission_flagged' : submission_flagged} 'submission_flagged' : submission_flagged}
log.debug(data)
return self.post(self.save_grade_url, data) return self.post(self.save_grade_url, data)
def is_student_calibrated(self, problem_location, grader_id): def is_student_calibrated(self, problem_location, grader_id):
...@@ -69,6 +70,7 @@ class PeerGradingService(): ...@@ -69,6 +70,7 @@ class PeerGradingService():
'feedback': feedback, 'feedback': feedback,
'rubric_scores[]': rubric_scores, 'rubric_scores[]': rubric_scores,
'rubric_scores_complete': True} 'rubric_scores_complete': True}
log.debug(data)
return self.post(self.save_calibration_essay_url, data) return self.post(self.save_calibration_essay_url, data)
def get_problem_list(self, course_id, grader_id): def get_problem_list(self, course_id, grader_id):
......
<section class="container peer-grading-container"> <section class="container peer-grading-container">
<div class="peer-grading" data-ajax_url="${ajax_url}"> <div class="peer-grading" data-ajax-url="${ajax_url}">
<div class="error-container">${error_text}</div> <div class="error-container">${error_text}</div>
<h1>Peer Grading</h1> <h1>Peer Grading</h1>
<h2>Instructions</h2> <h2>Instructions</h2>
......
<section class="container peer-grading-container"> <section class="container peer-grading-container">
<div class="peer-grading" data-ajax_url="${ajax_url}" data-location="${problem_location}"> <div class="peer-grading" data-ajax-url="${ajax_url}" data-location="${problem_location}">
<div class="error-container"></div> <div class="error-container"></div>
<section class="content-panel"> <section class="content-panel">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment