From 659c4eb42719969e723a0277a2e035febb2fe3d1 Mon Sep 17 00:00:00 2001 From: raylu Date: Fri, 13 May 2011 02:24:38 -0400 Subject: Write to database --- graders/lab1.py | 5 +++-- pyc/grader/views.py | 19 ++++++++++++++++--- 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 %}

You scored {{ score }}

{% endif %} {% if err %} @@ -17,4 +17,8 @@ {% csrf_token %}

+ +

+Back to rankings +

{% endblock %} -- cgit v1.2.3