Commit fbc2d492 by David Ormsbee

More work to hook actual choices up instead of just point values.

parent 0a2e5efe
from django.contrib import admin from django.contrib import admin
from openassessment.peer.models import Assessment from openassessment.peer.models import Assessment, AssessmentPart
admin.site.register(Assessment) admin.site.register(Assessment)
admin.site.register(AssessmentPart)
...@@ -10,9 +10,8 @@ class PeerAssessmentMixin(AssessmentMixin): ...@@ -10,9 +10,8 @@ class PeerAssessmentMixin(AssessmentMixin):
def assess(self, data, suffix=''): def assess(self, data, suffix=''):
"""Place an assessment into OpenAssessment system """Place an assessment into OpenAssessment system
""" """
# with self.get_assessment_module('peer-assessment') as assessment:
assessment_ui_model = self.get_assessment_module('peer-assessment') assessment_ui_model = self.get_assessment_module('peer-assessment')
rubric_dict = { rubric_dict = {
'criteria': self.rubric_criteria 'criteria': self.rubric_criteria
} }
...@@ -20,22 +19,23 @@ class PeerAssessmentMixin(AssessmentMixin): ...@@ -20,22 +19,23 @@ class PeerAssessmentMixin(AssessmentMixin):
"points_earned": map(int, data["points_earned"]), "points_earned": map(int, data["points_earned"]),
"points_possible": sum(c['total_value'] for c in self.rubric_criteria), "points_possible": sum(c['total_value'] for c in self.rubric_criteria),
"feedback": "Not yet implemented.", "feedback": "Not yet implemented.",
"options_selected": {}, # Placeholder "options_selected": data["options_selected"],
} }
assessment = peer_api.create_assessment( assessment = peer_api.create_assessment(
data["submission_uuid"], data["submission_uuid"],
self.get_student_item_dict()["student_id"], self.get_student_item_dict()["student_id"],
int(assessment_ui_model.must_grade), int(assessment_ui_model.must_grade),
int(assessment_ui_model.must_be_graded_by), int(assessment_ui_model.must_be_graded_by),
assessment_dict assessment_dict,
rubric_dict, rubric_dict,
) }
# Temp kludge until we fix JSON serialization for datetime # Temp kludge until we fix JSON serialization for datetime
assessment["scored_at"] = str(assessment["scored_at"]) assessment["scored_at"] = str(assessment["scored_at"])
return assessment_ui_model, "Success" return assessment_ui_model, "Success"
@XBlock.handler @XBlock.handler
def render_peer_assessment(self, data, suffix=''): def render_peer_assessment(self, data, suffix=''):
with self.get_assessment_module('peer-assessment') as assessment: with self.get_assessment_module('peer-assessment') as assessment:
......
...@@ -69,10 +69,10 @@ ...@@ -69,10 +69,10 @@
<li class="answer"> <li class="answer">
<div class="wrapper--input"> <div class="wrapper--input">
<input type="radio" <input type="radio"
name="assessment__rubric__question--{{ criterion.name }}" name="{{ criterion.name }}"
id="assessment__rubric__question--{{ criterion.name }}--01" id="assessment__rubric__question--{{ criterion.name }}"
class="answer__value" class="answer__value"
value="answer--001__option--01 - Very Well" /> value="{{ option.name }}" />
({{option.points}}) ({{option.points}})
<label for="assessment__rubric__question--001__option--01" <label for="assessment__rubric__question--001__option--01"
class="answer__label" class="answer__label"
......
/* START Javascript for OpenassessmentComposeXBlock. */
function OpenAssessmentBlock(runtime, element) {
var handlerUrl = runtime.handlerUrl(element, 'assess');
var success_msg = '<p class="success">Thanks for your feedback!</p>';
var failure_msg = '<p class="failure">An error occurred with your feedback</p>';
var click_msg = '<p class="clickhere">(click here to dismiss this message)</p>';
/* Sample Debug Console: http://localhost:8000/submissions/Joe_Bloggs/TestCourse/u_3 */
function prepare_assessment_post(element) {
var selector = $("input[type=radio]:checked", element);
var values = [];
for (i=0; i<selector.length; i++) {
values[i] = selector[i].value;
}
return {"submission_uuid":$("div#peer_submission_uuid")[0].innerText, "points_earned":values};
}
function displayStatus(result) {
var status = result[0];
var error_msg = result[1];
if (status) {
$('.openassessment_response_status_block', element).html(success_msg.concat(click_msg));
} else {
$('.openassessment_response_status_block', element).html(failure_msg.concat(error_msg).concat(click_msg));
}
$('.openassessment_response_status_block', element).css('display', 'block');
}
$('.openassessment_response_status_block', element).click(function(eventObject) {
$('.openassessment_response_status_block', element).css('display', 'none');
});
$('.openassessment_submit', element).click(function(eventObject) {
$.ajax({
type: "POST",
url: handlerUrl,
/* data: JSON.stringify({"submission": $('.openassessment_submission', element).val()}), */
data: JSON.stringify(prepare_assessment_post(element)),
success: displayStatus
});
});
$(function ($) {
/* Here's where you'd do things on page load. */
$(element).css('background-color', 'LightBlue')
});
}
/* END Javascript for OpenassessmentComposeXBlock. */
...@@ -45,17 +45,24 @@ function OpenAssessmentBlock(runtime, element) { ...@@ -45,17 +45,24 @@ function OpenAssessmentBlock(runtime, element) {
function prepare_assessment_post(element) { function prepare_assessment_post(element) {
var selector = $("input[type=radio]:checked", element); var selector = $("input[type=radio]:checked", element);
var criteriaChoices = {};
var values = []; var values = [];
for (var i=0; i<selector.length; i++) { for (var i=0; i<selector.length; i++) {
values[i] = selector[i].value; values[i] = selector[i].value;
criteriaChoices[selector[i].name] = selector[i].value
} }
return {"submission_uuid":$("div#peer_submission_uuid")[0].innerText, "points_earned":values}; return {
"submission_uuid":$("div#peer_submission_uuid")[0].innerText,
"points_earned":values,
"options_selected":criteriaChoices
};
} }
$('#peer-assessment--001__assessment__submit', element).click(function(eventObject) { $('#peer-assessment--001__assessment__submit', element).click(function(eventObject) {
eventObject.preventDefault();
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: handlerUrl, url: runtime.handlerUrl(element, 'assess'),
/* data: JSON.stringify({"submission": $('.openassessment_submission', element).val()}), */ /* data: JSON.stringify({"submission": $('.openassessment_submission', element).val()}), */
data: JSON.stringify(prepare_assessment_post(element)), data: JSON.stringify(prepare_assessment_post(element)),
success: function(data) { success: function(data) {
......
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