Commit 16c1f57f by Joe Blaylock Committed by Stephen Sanchez

TIM-231: Addressing feedback from @wedaly

* Improved error handling and reporting
parent c51eb79c
......@@ -934,18 +934,33 @@ def set_assessment_feedback(must_grade, feedback_dict):
Returns:
The modified or created feedback.
"""
feedback_model = AssessmentFeedback.objects.get(
submission_uuid=feedback_dict['submission_uuid']
)
submission = Submission.objects.get(uuid=feedback_dict['submission_uuid'])
feedback_dict['assessments'] = [
assessment.pk for assessment in Assessment.objects.filter(
submission=submission,
score_type="PE"
)[:must_grade]
]
submission_uuid = feedback_dict.get('submission_uuid', '')
if not submission_uuid:
error_message = u"An error occurred creating assessment feedback: bad or missing submission_uuid."
logger.exception(error_message)
raise PeerAssessmentInternalError(error_message)
try:
feedback_model = AssessmentFeedback.objects.get_or_create(submission_uuid=submission_uuid)
submission = Submission.objects.get(uuid=submission_uuid)
assessments = Assessment.objects.filter(submission=submission, score_type="PE")
except DatabaseError:
error_message = (
u"An error occurred getting database state to set assessment feedback for {}."
.format(submission_uuid)
)
logger.exception(error_message)
raise PeerAssessmentInternalError(error_message)
feedback_dict['assessments'] = [ assessment.pk for assessment in assessments[:must_grade] ]
feedback = AssessmentFeedbackSerializer(feedback_model, data=feedback_dict)
if not feedback.is_valid():
raise PeerAssessmentRequestError(feedback.errors)
feedback.save()
return feedback.data
\ No newline at end of file
try:
feedback.save()
except DatabaseError:
error_message = (
u"An error occurred saving assessment feedback for {}."
.format(submission_uuid)
)
logger.exception(error_message)
raise PeerAssessmentInternalError(error_message)
return feedback.data
......@@ -17,11 +17,6 @@ class GradeMixin(object):
"""
def __stackinfo(self):
import inspect
stack = inspect.stack()
return str(stack[0][1]) +':L'+str(stack[0][2])+':'+ str(stack[0][3]) +'()'
@XBlock.handler
def render_grade(self, data, suffix=''):
workflow = self.get_workflow_info()
......@@ -88,16 +83,29 @@ class GradeMixin(object):
'msg': _(u"No feedback given, so none recorded")
}
peer_api.set_assessment_feedback(
assessment_ui_model.get('must_grade', 0),
{
'submission_uuid': self.submission_uuid,
'feedback': assessment_feedback,
'helpfulness': 0
peer_assessment_error_message = ''
try:
peer_api.set_assessment_feedback(
assessment_ui_model.get('must_grade', 0),
{
'submission_uuid': self.submission_uuid,
'feedback': assessment_feedback,
'helpfulness': 0
}
)
except peer_api.PeerAssessmentInternalError, msg:
peer_assessment_error_message = msg
except peer_api.PeerAsessmentRequestError, msg:
peer_assessment_error_message = msg
if peer_assessment_error_message:
return {
'success': False,
'msg': peer_assessment_error_message,
}
else:
# Success!
return {
'success': True,
'msg': _(u"Feedback saved!")
}
)
return {
'success': True,
'msg': _(u"Feedback saved!")
}
......@@ -16,5 +16,3 @@ MIDDLEWARE_CLASSES += (
)
INTERNAL_IPS = ('127.0.0.1',)
LOGGING['loggers']['django.request']['level'] = 'DEBUG'
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