Commit 54a80164 by Dmitry Viskov Committed by Tyler Hallada

Support multi-leaf tagging (#160)

parent c44f8f51
...@@ -668,6 +668,9 @@ class CourseProblemsAndTagsListViewTests(TestCaseWithAuthentication): ...@@ -668,6 +668,9 @@ class CourseProblemsAndTagsListViewTests(TestCaseWithAuthentication):
tag_name='difficulty', tag_value=tags['difficulty'][0], tag_name='difficulty', tag_value=tags['difficulty'][0],
total_submissions=11, correct_submissions=4, created=created) total_submissions=11, correct_submissions=4, created=created)
G(models.ProblemsAndTags, course_id=course_id, module_id=module_id, G(models.ProblemsAndTags, course_id=course_id, module_id=module_id,
tag_name='difficulty', tag_value=tags['difficulty'][1],
total_submissions=11, correct_submissions=4, created=created)
G(models.ProblemsAndTags, course_id=course_id, module_id=module_id,
tag_name='learning_outcome', tag_value=tags['learning_outcome'][1], tag_name='learning_outcome', tag_value=tags['learning_outcome'][1],
total_submissions=11, correct_submissions=4, created=alt_created) total_submissions=11, correct_submissions=4, created=alt_created)
G(models.ProblemsAndTags, course_id=course_id, module_id=alt_module_id, G(models.ProblemsAndTags, course_id=course_id, module_id=alt_module_id,
...@@ -680,8 +683,8 @@ class CourseProblemsAndTagsListViewTests(TestCaseWithAuthentication): ...@@ -680,8 +683,8 @@ class CourseProblemsAndTagsListViewTests(TestCaseWithAuthentication):
'total_submissions': 11, 'total_submissions': 11,
'correct_submissions': 4, 'correct_submissions': 4,
'tags': { 'tags': {
u'difficulty': u'Easy', u'difficulty': [u'Easy', u'Medium'],
u'learning_outcome': u'Learned a few things', u'learning_outcome': [u'Learned a few things'],
}, },
'created': alt_created.strftime(settings.DATETIME_FORMAT) 'created': alt_created.strftime(settings.DATETIME_FORMAT)
}, },
...@@ -690,7 +693,7 @@ class CourseProblemsAndTagsListViewTests(TestCaseWithAuthentication): ...@@ -690,7 +693,7 @@ class CourseProblemsAndTagsListViewTests(TestCaseWithAuthentication):
'total_submissions': 4, 'total_submissions': 4,
'correct_submissions': 0, 'correct_submissions': 0,
'tags': { 'tags': {
u'learning_outcome': u'Learned everything', u'learning_outcome': [u'Learned everything'],
}, },
'created': created.strftime(settings.DATETIME_FORMAT) 'created': created.strftime(settings.DATETIME_FORMAT)
} }
......
...@@ -714,7 +714,7 @@ class ProblemsAndTagsListView(BaseCourseView): ...@@ -714,7 +714,7 @@ class ProblemsAndTagsListView(BaseCourseView):
* module_id: The ID of the problem. * module_id: The ID of the problem.
* total_submissions: Total number of submissions. * total_submissions: Total number of submissions.
* correct_submissions: Total number of *correct* submissions. * correct_submissions: Total number of *correct* submissions.
* tags: Dictionary that contains pairs "tag key: tag value". * tags: Dictionary that contains pairs "tag key: [tag value 1, tag value 2, ..., tag value N]".
""" """
serializer_class = serializers.ProblemsAndTagsSerializer serializer_class = serializers.ProblemsAndTagsSerializer
allow_empty = False allow_empty = False
...@@ -729,7 +729,10 @@ class ProblemsAndTagsListView(BaseCourseView): ...@@ -729,7 +729,10 @@ class ProblemsAndTagsListView(BaseCourseView):
for v in items: for v in items:
if v.module_id in result: if v.module_id in result:
result[v.module_id]['tags'][v.tag_name] = v.tag_value if v.tag_name not in result[v.module_id]['tags']:
result[v.module_id]['tags'][v.tag_name] = []
result[v.module_id]['tags'][v.tag_name].append(v.tag_value)
result[v.module_id]['tags'][v.tag_name].sort()
if result[v.module_id]['created'] < v.created: if result[v.module_id]['created'] < v.created:
result[v.module_id]['created'] = v.created result[v.module_id]['created'] = v.created
else: else:
...@@ -738,7 +741,7 @@ class ProblemsAndTagsListView(BaseCourseView): ...@@ -738,7 +741,7 @@ class ProblemsAndTagsListView(BaseCourseView):
'total_submissions': v.total_submissions, 'total_submissions': v.total_submissions,
'correct_submissions': v.correct_submissions, 'correct_submissions': v.correct_submissions,
'tags': { 'tags': {
v.tag_name: v.tag_value v.tag_name: [v.tag_value]
}, },
'created': v.created 'created': v.created
} }
......
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