MA-2076: add due date to course block API
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
"""
|
||||
Tests for Blocks Views
|
||||
"""
|
||||
from datetime import datetime
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from string import join
|
||||
@@ -20,7 +21,7 @@ class TestBlocksView(SharedModuleStoreTestCase):
|
||||
"""
|
||||
Test class for BlocksView
|
||||
"""
|
||||
requested_fields = ['graded', 'format', 'student_view_multi_device', 'children', 'not_a_field']
|
||||
requested_fields = ['graded', 'format', 'student_view_multi_device', 'children', 'not_a_field', 'due']
|
||||
BLOCK_TYPES_WITH_STUDENT_VIEW_DATA = ['video', 'discussion']
|
||||
|
||||
@classmethod
|
||||
@@ -28,8 +29,13 @@ class TestBlocksView(SharedModuleStoreTestCase):
|
||||
super(TestBlocksView, cls).setUpClass()
|
||||
|
||||
# create a toy course
|
||||
cls.course_key = ToyCourseFactory.create().id
|
||||
cls.course = ToyCourseFactory.create(
|
||||
modulestore=cls.store,
|
||||
due=datetime(3013, 9, 18, 11, 30, 00),
|
||||
)
|
||||
cls.course_key = cls.course.id
|
||||
cls.course_usage_key = cls.store.make_course_usage_key(cls.course_key)
|
||||
|
||||
cls.non_orphaned_block_usage_keys = set(
|
||||
unicode(item.location)
|
||||
for item in cls.store.get_items(cls.course_key)
|
||||
@@ -40,7 +46,7 @@ class TestBlocksView(SharedModuleStoreTestCase):
|
||||
def setUp(self):
|
||||
super(TestBlocksView, self).setUp()
|
||||
|
||||
# create a user, enrolled in the toy course
|
||||
# create and enroll user in the toy course
|
||||
self.user = UserFactory.create()
|
||||
self.client.login(username=self.user.username, password='test')
|
||||
CourseEnrollmentFactory.create(user=self.user, course_id=self.course_key)
|
||||
@@ -103,6 +109,7 @@ class TestBlocksView(SharedModuleStoreTestCase):
|
||||
self.assert_in_iff('children', block_data, xblock.has_children)
|
||||
self.assert_in_iff('graded', block_data, xblock.graded is not None)
|
||||
self.assert_in_iff('format', block_data, xblock.format is not None)
|
||||
self.assert_in_iff('due', block_data, xblock.due is not None)
|
||||
self.assert_true_iff(block_data['student_view_multi_device'], block_data['type'] == 'html')
|
||||
self.assertNotIn('not_a_field', block_data)
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ SUPPORTED_FIELDS = [
|
||||
SupportedFieldType('display_name', default_value=''),
|
||||
SupportedFieldType('graded'),
|
||||
SupportedFieldType('format'),
|
||||
SupportedFieldType('due'),
|
||||
# 'student_view_data'
|
||||
SupportedFieldType(StudentViewTransformer.STUDENT_VIEW_DATA, StudentViewTransformer),
|
||||
# 'student_view_multi_device'
|
||||
|
||||
@@ -43,7 +43,7 @@ class BlocksAPITransformer(BlockStructureTransformer):
|
||||
transform method.
|
||||
"""
|
||||
# collect basic xblock fields
|
||||
block_structure.request_xblock_fields('graded', 'format', 'display_name', 'category')
|
||||
block_structure.request_xblock_fields('graded', 'format', 'display_name', 'category', 'due')
|
||||
|
||||
# collect data from containing transformers
|
||||
StudentViewTransformer.collect(block_structure)
|
||||
|
||||
@@ -30,7 +30,7 @@ class BlocksView(DeveloperErrorViewMixin, ListAPIView):
|
||||
GET /api/courses/v1/blocks/<usage_id>/?
|
||||
username=anjali
|
||||
&depth=all
|
||||
&requested_fields=graded,format,student_view_multi_device,lti_url
|
||||
&requested_fields=graded,format,student_view_multi_device,lti_url,due
|
||||
&block_counts=video
|
||||
&student_view_data=video
|
||||
&block_types_filter=problem,html
|
||||
@@ -170,6 +170,8 @@ class BlocksView(DeveloperErrorViewMixin, ListAPIView):
|
||||
* lti_url: The block URL for an LTI consumer. Returned only if the
|
||||
"ENABLE_LTI_PROVIDER" Django settign is set to "True".
|
||||
|
||||
* due: The due date of the block. Returned only if "due" is included
|
||||
in the "requested_fields" parameter.
|
||||
"""
|
||||
|
||||
def list(self, request, usage_key_string): # pylint: disable=arguments-differ
|
||||
|
||||
Reference in New Issue
Block a user