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): ...@@ -934,18 +934,33 @@ def set_assessment_feedback(must_grade, feedback_dict):
Returns: Returns:
The modified or created feedback. The modified or created feedback.
""" """
feedback_model = AssessmentFeedback.objects.get( submission_uuid = feedback_dict.get('submission_uuid', '')
submission_uuid=feedback_dict['submission_uuid'] if not submission_uuid:
) error_message = u"An error occurred creating assessment feedback: bad or missing submission_uuid."
submission = Submission.objects.get(uuid=feedback_dict['submission_uuid']) logger.exception(error_message)
feedback_dict['assessments'] = [ raise PeerAssessmentInternalError(error_message)
assessment.pk for assessment in Assessment.objects.filter( try:
submission=submission, feedback_model = AssessmentFeedback.objects.get_or_create(submission_uuid=submission_uuid)
score_type="PE" submission = Submission.objects.get(uuid=submission_uuid)
)[:must_grade] 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) feedback = AssessmentFeedbackSerializer(feedback_model, data=feedback_dict)
if not feedback.is_valid(): if not feedback.is_valid():
raise PeerAssessmentRequestError(feedback.errors) raise PeerAssessmentRequestError(feedback.errors)
feedback.save() try:
return feedback.data feedback.save()
\ No newline at end of file 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): ...@@ -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 @XBlock.handler
def render_grade(self, data, suffix=''): def render_grade(self, data, suffix=''):
workflow = self.get_workflow_info() workflow = self.get_workflow_info()
...@@ -88,16 +83,29 @@ class GradeMixin(object): ...@@ -88,16 +83,29 @@ class GradeMixin(object):
'msg': _(u"No feedback given, so none recorded") 'msg': _(u"No feedback given, so none recorded")
} }
peer_api.set_assessment_feedback( peer_assessment_error_message = ''
assessment_ui_model.get('must_grade', 0), try:
{ peer_api.set_assessment_feedback(
'submission_uuid': self.submission_uuid, assessment_ui_model.get('must_grade', 0),
'feedback': assessment_feedback, {
'helpfulness': 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 += ( ...@@ -16,5 +16,3 @@ MIDDLEWARE_CLASSES += (
) )
INTERNAL_IPS = ('127.0.0.1',) 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