Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)