From 9c1dc2c0a7e535d3caeecd182e86324cecbfa0a8 Mon Sep 17 00:00:00 2001 From: Kshitij Sobti Date: Sat, 24 Mar 2018 05:08:31 +0530 Subject: [PATCH] Include title and location in problem response sheet --- .../instructor_task/tasks_helper/grades.py | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/lms/djangoapps/instructor_task/tasks_helper/grades.py b/lms/djangoapps/instructor_task/tasks_helper/grades.py index e3979c6cde..cd680b84a6 100644 --- a/lms/djangoapps/instructor_task/tasks_helper/grades.py +++ b/lms/djangoapps/instructor_task/tasks_helper/grades.py @@ -552,6 +552,19 @@ class ProblemGradeReport(object): class ProblemResponses(object): + + @classmethod + def _build_problem_list(cls, course_blocks, root, path=None): + if path is None: + path = [course_blocks.get_xblock_field(root, 'display_name')] + for block in course_blocks.get_children(root): + display_name = course_blocks.get_xblock_field(block, 'display_name') + if block.block_type == 'problem': + yield display_name, path, block + else: + for result in ProblemResponses._build_problem_list(course_blocks, block, path + [display_name]): + yield result + @classmethod def generate(cls, _xmodule_instance_args, _entry_id, course_id, task_input, action_name): """ @@ -575,16 +588,17 @@ class ProblemResponses(object): student_data = [] max_count = settings.FEATURES.get('MAX_PROBLEM_RESPONSES_COUNT') - - for block in course_blocks: - if block.block_type == 'problem': - problem_responses = list_problem_responses(course_id, block, max_count) - student_data += problem_responses - max_count -= len(problem_responses) + for title, path, block in ProblemResponses._build_problem_list(course_blocks, problem_key): + problem_responses = list_problem_responses(course_id, block, max_count) + student_data += problem_responses + for response in problem_responses: + response['title'] = title + response['location'] = ' > '.join(path) + max_count -= len(problem_responses) if max_count <= 0: break - features = ['username', 'state'] + features = ['username', 'title', 'location', 'state'] header, rows = format_dictlist(student_data, features) task_progress.attempted = task_progress.succeeded = len(rows)