Commit ef220715 by Will Daly

Merge pull request #58 from edx/will/fix-preview-errors

Will/fix preview errors
parents be916197 74d0e168
......@@ -3,6 +3,8 @@
import datetime
import pkg_resources
import dateutil.parser
from django.template.context import Context
from django.template.loader import get_template
from webob import Response
......@@ -155,9 +157,6 @@ DEFAULT_ASSESSMENT_MODULES = [
DEFAULT_PEER_ASSESSMENT,
]
# Used to parse datetime strings from the XML configuration.
TIME_PARSE_FORMAT = "%Y-%m-%dT%H:%M:%S"
def load(path):
"""Handy helper for getting resources from our kit."""
......@@ -384,11 +383,11 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse
context_dict["xblock_trace"] = self.get_xblock_trace()
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_datetime"] = start.strftime("%A, %B %d, %Y %X")
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_datetime"] = due.strftime("%A, %B %d, %Y %X")
......@@ -414,11 +413,11 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse
"""
# Is the question closed?
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():
return False, "start"
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():
return False, "due"
return True, None
......@@ -21,6 +21,7 @@ function OpenAssessmentBlock(runtime, element) {
$.ajax({
type: "POST",
url: renderPeerUrl,
dataType: "html",
success: function(data) {
render_peer_assessment(data);
}
......@@ -28,6 +29,7 @@ function OpenAssessmentBlock(runtime, element) {
$.ajax({
type: "POST",
url: renderSubmissionUrl,
dataType: "html",
success: function(data) {
render_submissions(data);
}
......@@ -69,6 +71,7 @@ function OpenAssessmentBlock(runtime, element) {
$.ajax({
type: "POST",
url: renderSelfUrl,
dataType: "html",
success: function(data) {
$('#openassessment__self-assessment', element).replaceWith(data);
}
......@@ -76,6 +79,7 @@ function OpenAssessmentBlock(runtime, element) {
$.ajax({
type: "POST",
url: renderPeerUrl,
dataType: "html",
success: function(data) {
render_peer_assessment(data)
}
......@@ -90,6 +94,7 @@ function OpenAssessmentBlock(runtime, element) {
$.ajax({
type: "POST",
url: renderSubmissionUrl,
dataType: "html",
success: function(data) {
render_submissions(data);
}
......
......@@ -8,7 +8,6 @@ from django.test import TestCase
from mock import patch
from workbench.runtime import WorkbenchRuntime
import webob
from openassessment.xblock.openassessmentblock import TIME_PARSE_FORMAT
from openassessment.xblock.submission_mixin import SubmissionMixin
from submissions import api as sub_api
......@@ -154,20 +153,20 @@ class TestOpenAssessment(TestCase):
past = now - datetime.timedelta(minutes = 10)
future = now + datetime.timedelta(minutes = 10)
way_future = now + datetime.timedelta(minutes = 20)
self.assessment.start_datetime = past.strftime(TIME_PARSE_FORMAT)
self.assessment.due_datetime = past.strftime(TIME_PARSE_FORMAT)
self.assessment.start_datetime = past.isoformat()
self.assessment.due_datetime = past.isoformat()
problem_open, reason = self.assessment.is_open()
self.assertFalse(problem_open)
self.assertEqual("due", reason)
self.assessment.start_datetime = past.strftime(TIME_PARSE_FORMAT)
self.assessment.due_datetime = future.strftime(TIME_PARSE_FORMAT)
self.assessment.start_datetime = past.isoformat()
self.assessment.due_datetime = future.isoformat()
problem_open, reason = self.assessment.is_open()
self.assertTrue(problem_open)
self.assertEqual(None, reason)
self.assessment.start_datetime = future.strftime(TIME_PARSE_FORMAT)
self.assessment.due_datetime = way_future.strftime(TIME_PARSE_FORMAT)
self.assessment.start_datetime = future.isoformat()
self.assessment.due_datetime = way_future.isoformat()
problem_open, reason = self.assessment.is_open()
self.assertFalse(problem_open)
self.assertEqual("start", reason)
......@@ -252,8 +252,13 @@ def get_score(student_item):
}]
"""
student_item_model = StudentItem.objects.get(**student_item)
scores = Score.objects.filter(student_item=student_item_model)
try:
student_item_model = StudentItem.objects.get(**student_item)
scores = Score.objects.filter(student_item=student_item_model)
except StudentItem.DoesNotExist:
return None
return ScoreSerializer(scores, many=True).data
......
import datetime
import copy
from ddt import ddt, file_data
from django.db import DatabaseError
......@@ -134,6 +135,11 @@ class TestApi(TestCase):
scores = api.get_score(STUDENT_ITEM)
self._assert_score(scores[0], 11, 12)
def test_get_score_no_student_id(self):
student_item = copy.deepcopy(STUDENT_ITEM)
student_item['student_id'] = None
self.assertIs(api.get_score(student_item), None)
def _assert_score(
self,
score,
......@@ -141,4 +147,4 @@ class TestApi(TestCase):
expected_points_possible):
self.assertIsNotNone(score)
self.assertEqual(score["points_earned"], expected_points_earned)
self.assertEqual(score["points_possible"], expected_points_possible)
\ No newline at end of file
self.assertEqual(score["points_possible"], expected_points_possible)
......@@ -7,4 +7,5 @@ django==1.4.8
django-extensions==1.2.5
djangorestframework==2.3.5
Mako==0.9.1
python-dateutil==2.1
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