summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgraders/lab1.py5
-rw-r--r--pyc/grader/views.py19
-rw-r--r--pyc/templates/submit.html6
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 %}