diff options
Diffstat (limited to 'pyc/grader/views.py')
-rw-r--r-- | pyc/grader/views.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/pyc/grader/views.py b/pyc/grader/views.py index df7e0b9..5b0f2a3 100644 --- a/pyc/grader/views.py +++ b/pyc/grader/views.py @@ -11,7 +11,8 @@ def index(request): def lab(request, lab_id): lab = Lab.objects.get(pk=lab_id) - submissions = lab.submission_set.filter(user__is_staff=False).order_by('-grade', '-time') + #submissions = lab.submission_set.filter(user__is_staff=False).order_by('-grade', '-time') + submissions = lab.submission_set.order_by('-grade', '-time') return render_to_response('lab.html', { 'lab' : lab, 'submissions' : submissions, @@ -27,21 +28,33 @@ def submit(request, lab_id): if form.is_valid(): labobj = Lab.objects.get(pk=lab_id) rfile = request.FILES['file'] - submission = Submission(lab=labobj, user=request.user, file=rfile) + submission = Submission(lab=labobj, user=request.user) try: submission.save() except IntegrityError: - pass + # already exists + submission = Submission.objects.get(lab__exact=lab_id, user__exact=request.user) + submission.file = rfile + submission.save() score, err = grade(submission.file.name, lab_id) + try: + score = int(score) + except ValueError: + score = 0 + if score > submission.grade: + submission.grade = score + submission.save() return render_to_response('submit.html', { 'err' : err, 'score' : score, 'form' : form, + 'lab_id' : lab_id, }, context_instance=RequestContext(request)) else: form = SubmissionForm() return render_to_response('submit.html', { 'form' : form, + 'lab_id' : lab_id, }, context_instance=RequestContext(request)) def grade(file, id): |