'Gets the grade for the currently-saved problem state, but does not save it
to the block.
For new student_answers being graded, `student_answers` is a dict of all the
entries from request.POST, but with the first part of each key removed
(the string before the first "_").  Thus, for example,
input_ID123 -> ID123, and input_fromjs_ID123 -> fromjs_ID123.
For rescoring, `student_answers` is None.
Calls the Response for each question in this problem, to do the actual grading.'

def get_grade_from_current_answers(self, student_answers):

    oldcmap = self.correct_map
    newcmap = CorrectMap()
    for responder in self.responders.values():
        if (('filesubmission' in responder.allowed_inputfields) and (student_answers is None)):
            _ = self.capa_system.i18n.ugettext
            raise Exception(_(u'Cannot    rescore    problems    with    possible    file    submissions'))
        if (('filesubmission' in responder.allowed_inputfields) and (student_answers is not None)):
            results = responder.evaluate_answers(student_answers, oldcmap)
        else:
            results = responder.evaluate_answers(self.student_answers, oldcmap)
        newcmap.update(results)
    return newcmap
