فهرست منبع

Delete old submission when evaluating new one

Ideally, we would keep the old one if it was better
raylu 14 سال پیش
والد
کامیت
9d2899d65c
1فایلهای تغییر یافته به همراه8 افزوده شده و 3 حذف شده
  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,