Commit 3cdda99b by Will Daly

Fix error caused by milliseconds in timestamp

parent 95e1a581
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
import datetime import datetime
import pkg_resources import pkg_resources
import dateutil.parser
from django.template.context import Context from django.template.context import Context
from django.template.loader import get_template from django.template.loader import get_template
from webob import Response from webob import Response
...@@ -155,9 +157,6 @@ DEFAULT_ASSESSMENT_MODULES = [ ...@@ -155,9 +157,6 @@ DEFAULT_ASSESSMENT_MODULES = [
DEFAULT_PEER_ASSESSMENT, DEFAULT_PEER_ASSESSMENT,
] ]
# Used to parse datetime strings from the XML configuration.
TIME_PARSE_FORMAT = "%Y-%m-%dT%H:%M:%S"
def load(path): def load(path):
"""Handy helper for getting resources from our kit.""" """Handy helper for getting resources from our kit."""
...@@ -384,11 +383,11 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse ...@@ -384,11 +383,11 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse
context_dict["xblock_trace"] = self.get_xblock_trace() context_dict["xblock_trace"] = self.get_xblock_trace()
if self.start_datetime: if self.start_datetime:
start = datetime.datetime.strptime(self.start_datetime, TIME_PARSE_FORMAT) start = dateutil.parser.parse(self.start_datetime)
context_dict["formatted_start_date"] = start.strftime("%A, %B %d, %Y") context_dict["formatted_start_date"] = start.strftime("%A, %B %d, %Y")
context_dict["formatted_start_datetime"] = start.strftime("%A, %B %d, %Y %X") context_dict["formatted_start_datetime"] = start.strftime("%A, %B %d, %Y %X")
if self.due_datetime: if self.due_datetime:
due = datetime.datetime.strptime(self.due_datetime, TIME_PARSE_FORMAT) due = dateutil.parser.parse(self.due_datetime)
context_dict["formatted_due_date"] = due.strftime("%A, %B %d, %Y") context_dict["formatted_due_date"] = due.strftime("%A, %B %d, %Y")
context_dict["formatted_due_datetime"] = due.strftime("%A, %B %d, %Y %X") context_dict["formatted_due_datetime"] = due.strftime("%A, %B %d, %Y %X")
...@@ -414,11 +413,11 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse ...@@ -414,11 +413,11 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse
""" """
# Is the question closed? # Is the question closed?
if self.start_datetime: if self.start_datetime:
start = datetime.datetime.strptime(self.start_datetime, TIME_PARSE_FORMAT) start = dateutil.parser.parse(self.start_datetime)
if start > datetime.datetime.utcnow(): if start > datetime.datetime.utcnow():
return False, "start" return False, "start"
if self.due_datetime: if self.due_datetime:
due = datetime.datetime.strptime(self.due_datetime, TIME_PARSE_FORMAT) due = dateutil.parser.parse(self.due_datetime)
if due < datetime.datetime.utcnow(): if due < datetime.datetime.utcnow():
return False, "due" return False, "due"
return True, None return True, None
...@@ -8,7 +8,6 @@ from django.test import TestCase ...@@ -8,7 +8,6 @@ from django.test import TestCase
from mock import patch from mock import patch
from workbench.runtime import WorkbenchRuntime from workbench.runtime import WorkbenchRuntime
import webob import webob
from openassessment.xblock.openassessmentblock import TIME_PARSE_FORMAT
from openassessment.xblock.submission_mixin import SubmissionMixin from openassessment.xblock.submission_mixin import SubmissionMixin
from submissions import api as sub_api from submissions import api as sub_api
...@@ -154,20 +153,20 @@ class TestOpenAssessment(TestCase): ...@@ -154,20 +153,20 @@ class TestOpenAssessment(TestCase):
past = now - datetime.timedelta(minutes = 10) past = now - datetime.timedelta(minutes = 10)
future = now + datetime.timedelta(minutes = 10) future = now + datetime.timedelta(minutes = 10)
way_future = now + datetime.timedelta(minutes = 20) way_future = now + datetime.timedelta(minutes = 20)
self.assessment.start_datetime = past.strftime(TIME_PARSE_FORMAT) self.assessment.start_datetime = past.isoformat()
self.assessment.due_datetime = past.strftime(TIME_PARSE_FORMAT) self.assessment.due_datetime = past.isoformat()
problem_open, reason = self.assessment.is_open() problem_open, reason = self.assessment.is_open()
self.assertFalse(problem_open) self.assertFalse(problem_open)
self.assertEqual("due", reason) self.assertEqual("due", reason)
self.assessment.start_datetime = past.strftime(TIME_PARSE_FORMAT) self.assessment.start_datetime = past.isoformat()
self.assessment.due_datetime = future.strftime(TIME_PARSE_FORMAT) self.assessment.due_datetime = future.isoformat()
problem_open, reason = self.assessment.is_open() problem_open, reason = self.assessment.is_open()
self.assertTrue(problem_open) self.assertTrue(problem_open)
self.assertEqual(None, reason) self.assertEqual(None, reason)
self.assessment.start_datetime = future.strftime(TIME_PARSE_FORMAT) self.assessment.start_datetime = future.isoformat()
self.assessment.due_datetime = way_future.strftime(TIME_PARSE_FORMAT) self.assessment.due_datetime = way_future.isoformat()
problem_open, reason = self.assessment.is_open() problem_open, reason = self.assessment.is_open()
self.assertFalse(problem_open) self.assertFalse(problem_open)
self.assertEqual("start", reason) self.assertEqual("start", reason)
...@@ -7,4 +7,5 @@ django==1.4.8 ...@@ -7,4 +7,5 @@ django==1.4.8
django-extensions==1.2.5 django-extensions==1.2.5
djangorestframework==2.3.5 djangorestframework==2.3.5
Mako==0.9.1 Mako==0.9.1
python-dateutil==2.1
pytz==2012h pytz==2012h
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment