def submit_explain(lti=lti): assignment_id = request.form.get('assignment_id', None) course_id = request.values.get('course_id', g.course.id if 'course' in g else None) if None in (assignment_id, course_id): return jsonify(success=False, message="No Assignment ID or Course ID given!") assignment = Assignment.by_id(int(assignment_id)) submission = Submission.save_correct(g.user.id, int(assignment_id), int(course_id)) lis_result_sourcedid = request.form.get('lis_result_sourcedid', submission.url) or None code, elements = submission.load_explanation(4) if lis_result_sourcedid is None or lis_result_sourcedid == "NOT IN SESSION": return jsonify(success=False, message="Not in a grading context.") hl_lines = [e['line'][0] for e in elements] message = """<h1>Code Annotation</h1> <div>Thank you for submitting. This activity will be graded manually, so please be patient!</div> <div><ul><li>{explanations}</li></ul></div> <div>{code}</div> """.format(code=highlight( code, PythonLexer(), HtmlFormatter(linenos=True, hl_lines=hl_lines, noclasses=True)), explanations='</li><li>'.join([ '<b>{line} ({type}):</b> {answer}'.format( line=e['line'][0], answer=e['answer'], type=Submission.abbreviate_element_type(e['name'])) for e in sorted(elements, key=lambda e: e['line'][0]) ])) lti.post_grade(0, message, endpoint=lis_result_sourcedid) return jsonify(success=True)
def submit_explain(lti=lti): assignment_id = request.form.get('assignment_id', None) course_id = request.values.get('course_id', g.course.id if 'course' in g else None) if None in (assignment_id, course_id): return jsonify(success=False, message="No Assignment ID or Course ID given!") assignment = Assignment.by_id(int(assignment_id)) submission = Submission.save_correct(g.user.id, int(assignment_id), int(course_id)) lis_result_sourcedid = request.form.get('lis_result_sourcedid', submission.url) or None code, elements = submission.load_explanation(4) if lis_result_sourcedid is None or lis_result_sourcedid == "NOT IN SESSION": return jsonify(success=False, message="Not in a grading context.") hl_lines = [e['line'][0] for e in elements] message = """<h1>Code Annotation</h1> <div>Thank you for submitting. This activity will be graded manually, so please be patient!</div> <div><ul><li>{explanations}</li></ul></div> <div>{code}</div> """.format( code = highlight(code, PythonLexer(), HtmlFormatter(linenos=True, hl_lines=hl_lines, noclasses=True)), explanations = '</li><li>'.join( ['<b>{line} ({type}):</b> {answer}'.format(line=e['line'][0], answer=e['answer'], type=Submission.abbreviate_element_type(e['name'])) for e in sorted(elements, key=lambda e: e['line'][0])]) ) lti.post_grade(0, message, endpoint=lis_result_sourcedid) return jsonify(success=True)
def submit_explain(lti=lti): assignment_id = request.form.get('question_id', None) lis_result_sourcedid = request.form.get('lis_result_sourcedid', None) if assignment_id is None: return jsonify(success=False, message="No Assignment ID given!") user = User.from_lti("canvas", session["pylti_user_id"], session.get("user_email", ""), session.get("lis_person_name_given", ""), session.get("lis_person_name_family", "")) assignment = Assignment.by_id(assignment_id) submission = Submission.save_correct(user.id, assignment_id) code, elements = submission.load_explanation(5) if lis_result_sourcedid is None: return jsonify(success=False, message="Not in a grading context.") hl_lines = [e['line'][0] for e in elements] message = """<h1>Code Annotation</h1> <div>Thank you for submitting. This activity will be graded manually, so please be patient!</div> <div><ul><li>{explanations}</li></ul></div> <div>{code}</div> """.format( code = highlight(code, PythonLexer(), HtmlFormatter(linenos=True, hl_lines=hl_lines, noclasses=True)), explanations = '</li><li>'.join( ['<b>{line} ({type}):</b> {answer}'.format(line=e['line'][0], answer=e['answer'], type=Submission.abbreviate_element_type(e['name'])) for e in sorted(elements, key=lambda e: e['line'][0])]) ) lti.post_grade(0, message, endpoint=lis_result_sourcedid) return jsonify(success=True)
def submit_explain(lti=lti): assignment_id = request.form.get('question_id', None) lis_result_sourcedid = request.form.get('lis_result_sourcedid', None) if assignment_id is None: return jsonify(success=False, message="No Assignment ID given!") user = User.from_lti("canvas", session["pylti_user_id"], session.get("user_email", ""), session.get("lis_person_name_given", ""), session.get("lis_person_name_family", "")) assignment = Assignment.by_id(assignment_id) submission = Submission.save_correct(user.id, assignment_id) code, elements = submission.load_explanation(5) if lis_result_sourcedid is None: return jsonify(success=False, message="Not in a grading context.") hl_lines = [e['line'][0] for e in elements] message = """<h1>Code Annotation</h1> <div>Thank you for submitting. This activity will be graded manually, so please be patient!</div> <div><ul><li>{explanations}</li></ul></div> <div>{code}</div> """.format(code=highlight( code, PythonLexer(), HtmlFormatter(linenos=True, hl_lines=hl_lines, noclasses=True)), explanations='</li><li>'.join([ '<b>{line} ({type}):</b> {answer}'.format( line=e['line'][0], answer=e['answer'], type=Submission.abbreviate_element_type(e['name'])) for e in sorted(elements, key=lambda e: e['line'][0]) ])) lti.post_grade(0, message, endpoint=lis_result_sourcedid) return jsonify(success=True)