Exemplo n.º 1
0
def rerun_submission(request, pk):
    submission = get_object_or_404(Submission, pk=pk)

    if (request.user
            not in submission.assignment.course.teaching_assistants.all()):
        return HttpResponse(status=403)

    submission.state = Submission.STATE_NEW
    submission.evaluate()

    log_action("Rerun submission", request.user, submission)

    return redirect(request.META.get("HTTP_REFERER", "/"))
Exemplo n.º 2
0
def recompute_score(request, pk):
    submission = get_object_or_404(models.Submission, pk=pk)

    if (request.user
            not in submission.assignment.course.teaching_assistants.all()):
        return HttpResponse(status=403)

    # Clear the penalty so it's calculated again
    submission.penalty = None
    submission.save()

    log_action("Recompute submission's score", request.user, submission)

    return redirect(request.META.get("HTTP_REFERER", "/"))
Exemplo n.º 3
0
def review(request, pk):
    submission = get_object_or_404(models.Submission, pk=pk)

    if (request.user
            not in submission.assignment.course.teaching_assistants.all()):
        return HttpResponse(status=403)

    submission.review_message = request.POST["review-code"]
    submission.changeReason = "Review"
    submission.save()

    log_action("Review submission", request.user, submission)

    return redirect(request.META.get("HTTP_REFERER", "/"))
Exemplo n.º 4
0
def reveal(request, course_pk, assignment_pk):
    course = get_object_or_404(Course, pk=course_pk)
    assignment = get_object_or_404(course.assignment_set, pk=assignment_pk)

    if request.user not in course.teaching_assistants.all():
        return HttpResponse(status=403)

    assignment.hidden_score = False
    assignment.save()

    log_action("Reveal score", request.user, assignment)
    return redirect(
        request.META.get(
            "HTTP_REFERER",
            f"/assignment/{course.pk}/{assignment.pk}",
        ))
Exemplo n.º 5
0
def download(request, pk):
    submission = get_object_or_404(Submission, pk=pk)

    if (submission.user != request.user and request.user
            not in submission.assignment.course.teaching_assistants.all()):
        return HttpResponse(status=403)

    with TemporaryDirectory() as _tmp:
        tmp = Path(_tmp)

        submission.download(tmp / f'{submission.pk}.zip')
        review_zip = (tmp / f'{submission.pk}.zip').open('rb')

        log_action("Download submission", request.user, submission)

        return FileResponse(review_zip, as_attachment=True)
Exemplo n.º 6
0
def download(request, pk):
    submission = get_object_or_404(Submission, pk=pk)

    if (submission.user != request.user and request.user
            not in submission.assignment.course.teaching_assistants.all()):
        return HttpResponse(status=403)

    buff = io.BytesIO()
    submission.download(buff)
    buff.seek(0)

    log_action("Download submission", request.user, submission)

    return FileResponse(
        buff,
        as_attachment=True,
        filename=f"{submission.pk}.zip",
    )