Browse Source

Store times in UTC, show times in PDT

raylu 14 years ago
parent
commit
a0ca3616ad
2 changed files with 12 additions and 3 deletions
  1. 2 2
      pyc/grader/models.py
  2. 10 1
      pyc/grader/views.py

+ 2 - 2
pyc/grader/models.py

@@ -13,10 +13,10 @@ class Submission(models.Model):
 		return "s%d_%d_%d.py" % (instance.lab.id, instance.user.id, int(time()))
 	lab = models.ForeignKey(Lab)
 	user = models.ForeignKey(User)
-	time = models.DateTimeField(auto_now_add=True)
+	time = models.DateTimeField()
 	file = models.FileField(upload_to=upload_filename)
 	grade = models.IntegerField(null=True)
 	class Meta:
 		unique_together = (('lab', 'user'),)
 	def __unicode__(self):
-		return "%d, %s" % (self.lab.id, self.user)
+		return "%d, %s, %d" % (self.lab.id, self.user, self.grade)

+ 10 - 1
pyc/grader/views.py

@@ -13,8 +13,15 @@ def password_changed(request):
 	return render_to_response('password_changed.html')
 
 def lab(request, lab_id):
+	from datetime import timedelta
 	lab = Lab.objects.get(pk=lab_id)
 	submissions = lab.submission_set.filter(user__is_staff=False).order_by('-grade', '-time')
+
+	# times are stored in UTC; do the conversion here
+	tzoffset = timedelta(0, 0, 0, 0, 0, -7) # -7 hours
+	for s in submissions:
+		s.time += tzoffset
+
 	return render_to_response('lab.html', {
 			'lab' : lab,
 			'submissions' : submissions,
@@ -27,13 +34,14 @@ def submit(request, lab_id):
 	from django.db import IntegrityError
 	from django.conf import settings
 	import os
+	from datetime import datetime
 
 	if request.method == 'POST':
 		form = SubmissionForm(request.POST, request.FILES)
 		if form.is_valid():
 			labobj = Lab.objects.get(pk=lab_id)
 			rfile = request.FILES['file']
-			submission = Submission(lab=labobj, user=request.user)
+			submission = Submission(lab=labobj, user=request.user, time=datetime.utcnow())
 			try:
 				submission.save()
 			except IntegrityError:
@@ -50,6 +58,7 @@ def submit(request, lab_id):
 				score = 0
 			if score > submission.grade:
 				submission.grade = score
+				submission.time = datetime.utcnow()
 			submission.save()
 
 			return render_to_response('submit.html', {