raylu 14 жил өмнө
parent
commit
659c4eb427

+ 3 - 2
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'))

+ 16 - 3
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):

+ 5 - 1
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 %}