def _section_progress_report(course, access): """Report progress""" course_key = course.id summary, modules = get_pgreport_table(course_key) module_tree = summary.pop("module_tree") graded = cache.get('progress_summary') if graded is not None: summary["graded_count"] = int(graded) store = contentstore() org, cnum, _dummy = course_key.to_deprecated_string().split('/') try: content = store.fs.get_last_version( '/c4x/{}/{}/asset/progress_students.csv.gz'.format(org, cnum)) utc = pytz.utc.localize(content.upload_date) tzdate = utc.astimezone(pytz.timezone(settings.TIME_ZONE)) current_csv = tzdate.strftime('%Y-%m-%d %H:%M:%S') except NoFile: current_csv = None section_data = { 'section_key': 'progress_report', 'section_display_name': _('Progress Report'), 'access': access, 'course_display_name': course.display_name, 'summary_keys': summary.keys(), 'summary_values': summary, 'modules': modules, 'module_tree': module_tree, 'current_csv': current_csv, 'progress_report_url': reverse('create_pgreport_csv', kwargs={'course_id': course_key.to_deprecated_string()}), 'progress_csv_url': reverse('get_pgreport_csv', kwargs={'course_id': course_key.to_deprecated_string()}), 'list_instructor_tasks_url': reverse('list_instructor_tasks', kwargs={'course_id': course_key.to_deprecated_string()}), } return section_data
def _section_progress_report(course, access): """Report progress""" course_key = course.id summary, modules = get_pgreport_table(course_key) module_tree = summary.pop("module_tree") graded = cache.get('progress_summary') if graded is not None: summary["graded_count"] = int(graded) store = contentstore() org, cnum, _dummy = course_key.to_deprecated_string().split('/') try: content = store.fs.get_last_version('/c4x/{}/{}/asset/progress_students.csv.gz'.format( org, cnum)) utc = pytz.utc.localize(content.upload_date) tzdate = utc.astimezone(pytz.timezone(settings.TIME_ZONE)) current_csv = tzdate.strftime('%Y-%m-%d %H:%M:%S') except NoFile: current_csv = None section_data = { 'section_key': 'progress_report', 'section_display_name': _('Progress Report'), 'access': access, 'course_display_name': course.display_name, 'summary_keys': summary.keys(), 'summary_values': summary, 'modules': modules, 'module_tree': module_tree, 'current_csv': current_csv, 'progress_report_url': reverse('create_pgreport_csv', kwargs={'course_id': course_key.to_deprecated_string()}), 'progress_csv_url': reverse('get_pgreport_csv', kwargs={'course_id': course_key.to_deprecated_string()}), 'list_instructor_tasks_url': reverse('list_instructor_tasks', kwargs={'course_id': course_key.to_deprecated_string()}), } return section_data
def test_get_pgreport_table(self): module_summary = { 'location': unicode(self.problems[0].location), 'count': 1, 'display_name': "display_name", 'weight': "weight", 'type': "category", 'total_score': 3.0, 'due': "due", 'score/total': "score-total", 'submit_count': 1, 'start': "start", 'student_answers': {}, 'max_score': 2.0, 'correct_map': {} } filter_mock = MagicMock() pgmodule_mock = MagicMock() filter_mock.values.return_value = [module_summary] pgmodule_mock.objects.filter.return_value = filter_mock with patch('pgreport.views.ProgressModules', pgmodule_mock): summary, modules = get_pgreport_table(self.course.id) filter_mock.values.assert_called_once_with() pgmodule_mock.objects.filter.assert_called_with(course_id=self.course.id) self.assertEquals(summary, { 'enrollments': 7, 'active_students': 6, 'module_tree': [ {self.html.location: [u'Week 1', u'Lesson 1', u'Unit1']}, {self.problems[0].location: [u'Week 1', u'Lesson 1', u'Unit1']}, {self.problems[1].location: [u'Week 1', u'Lesson 1', u'Unit1']} ] }) self.assertEquals(modules, {unicode(self.problems[0].location): module_summary})