diff options
-rwxr-xr-x | graders/lab1.py | 5 | ||||
-rw-r--r-- | pyc/grader/views.py | 19 | ||||
-rw-r--r-- | pyc/templates/submit.html | 6 |
3 files changed, 24 insertions, 6 deletions
diff --git a/graders/lab1.py b/graders/lab1.py index 86e595f..66417af 100755 --- a/graders/lab1.py +++ b/graders/lab1.py @@ -1,14 +1,15 @@ #!/usr/bin/env python -from sandbox import Sandbox, SandboxConfig import sys +sys.path.append('/home/dotcloud/env/lib/python2.6/site-packages') +from sandbox import Sandbox, SandboxConfig from os import path importname = sys.argv[1] if importname.endswith('.py'): importname = importname[:len(importname)-3] else: - print 'Filename did not end with .py for some reason...' + print >> sys.stderr, 'Filename did not end with .py for some reason...' sys.exit(2) sys.path.insert(0, path.expanduser('~/submissions')) 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): diff --git a/pyc/templates/submit.html b/pyc/templates/submit.html index a8a05fa..112df4b 100644 --- a/pyc/templates/submit.html +++ b/pyc/templates/submit.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% block body %} -{% if score %} +{% if score != None %} <p>You scored {{ score }}</p> {% endif %} {% if err %} @@ -17,4 +17,8 @@ {% csrf_token %} </form> </p> + +<p> +<a href="/lab/{{ lab_id }}">Back</a> to rankings +</p> {% endblock %} |