Example #1
0
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
Example #3
0
    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})