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", "/"))
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", "/"))
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", "/"))
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}", ))
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)
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", )