Explorar el Código

Delete old submission when evaluating new one

Ideally, we would keep the old one if it was better
raylu hace 14 años
padre
commit
9d2899d65c
Se han modificado 1 ficheros con 8 adiciones y 3 borrados
  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,