Browse Source

Delete old submission when evaluating new one

Ideally, we would keep the old one if it was better
raylu 14 years ago
parent
commit
9d2899d65c
1 changed files with 8 additions and 3 deletions
  1. 8 3
      pyc/grader/views.py

+ 8 - 3
pyc/grader/views.py

@@ -11,8 +11,7 @@ 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.order_by('-grade', '-time')
+	submissions = lab.submission_set.filter(user__is_staff=False).order_by('-grade', '-time')
 	return render_to_response('lab.html', {
 			'lab' : lab,
 			'submissions' : submissions,
@@ -23,6 +22,9 @@ from django.contrib.auth.decorators import login_required
 def submit(request, lab_id):
 	from django.http import HttpResponseRedirect
 	from django.db import IntegrityError
+	from django.conf import settings
+	import os
+
 	if request.method == 'POST':
 		form = SubmissionForm(request.POST, request.FILES)
 		if form.is_valid():
@@ -34,8 +36,10 @@ def submit(request, lab_id):
 			except IntegrityError:
 				# already exists
 				submission = Submission.objects.get(lab__exact=lab_id, user__exact=request.user)
+				if submission.file:
+					os.unlink(os.path.join(settings.MEDIA_ROOT, submission.file.name))
 			submission.file = rfile
-			submission.save()
+			submission.save() # this moves the file to MEDIA_ROOT
 			score, err = grade(submission.file.name, lab_id)
 			try:
 				score = int(score)
@@ -44,6 +48,7 @@ def submit(request, lab_id):
 			if score > submission.grade:
 				submission.grade = score
 			submission.save()
+
 			return render_to_response('submit.html', {
 					'err' : err,
 					'score' : score,