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."
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)
) )
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( feedback_dict['assessments'] = [ assessment.pk for assessment in assessments[:must_grade] ]
submission=submission,
score_type="PE"
)[: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)
try:
feedback.save() 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 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,6 +83,8 @@ class GradeMixin(object): ...@@ -88,6 +83,8 @@ class GradeMixin(object):
'msg': _(u"No feedback given, so none recorded") 'msg': _(u"No feedback given, so none recorded")
} }
peer_assessment_error_message = ''
try:
peer_api.set_assessment_feedback( peer_api.set_assessment_feedback(
assessment_ui_model.get('must_grade', 0), assessment_ui_model.get('must_grade', 0),
{ {
...@@ -96,7 +93,18 @@ class GradeMixin(object): ...@@ -96,7 +93,18 @@ class GradeMixin(object):
'helpfulness': 0 '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 { return {
'success': True, 'success': True,
'msg': _(u"Feedback saved!") '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