Esempio n. 1
0
def register_on_enable():
    data_sources.Registry.register(ExamsDataSource)
    data_sources.Registry.register(PupilsDataSource)
    data_sources.Registry.register(AnswersDataSource)

    exams = analytics.Visualization('exams', 'Exams',
                                    'fake_visualizations.html',
                                    [ExamsDataSource])
    pupils = analytics.Visualization('pupils', 'Pupils',
                                     'fake_visualizations.html',
                                     [PupilsDataSource])
    scoring = analytics.Visualization(
        'scoring', 'Scoring', 'fake_visualizations.html',
        [ExamsDataSource, PupilsDataSource, AnswersDataSource])

    dashboard.DashboardHandler.add_sub_nav_mapping(
        'analytics',
        'exams',
        'Exams',
        action='analytics_exams',
        contents=analytics.TabRenderer([exams]))
    dashboard.DashboardHandler.add_sub_nav_mapping(
        'analytics',
        'pupils',
        'Pupils',
        action='analytics_pupils',
        contents=analytics.TabRenderer([pupils]))
    dashboard.DashboardHandler.add_sub_nav_mapping(
        'analytics',
        'scoring',
        'Scoring',
        action='analytics_scoring',
        contents=analytics.TabRenderer([scoring]))
def register_callbacks():
    # Update enrollments counters when a student enrolls, unenrolls.
    models.StudentLifecycleObserver.EVENT_CALLBACKS[
        models.StudentLifecycleObserver.EVENT_ADD][
            MODULE_NAME] = _count_add
    models.StudentLifecycleObserver.EVENT_CALLBACKS[
        models.StudentLifecycleObserver.EVENT_REENROLL][
            MODULE_NAME] = _count_add
    models.StudentLifecycleObserver.EVENT_CALLBACKS[
        models.StudentLifecycleObserver.EVENT_UNENROLL][
            MODULE_NAME] = _count_drop
    models.StudentLifecycleObserver.EVENT_CALLBACKS[
        models.StudentLifecycleObserver.EVENT_UNENROLL_COMMANDED][
            MODULE_NAME] = _count_drop

    # Set counters for newly-created courses initially to zero (to avoid
    # extraneous enrollments MapReduce runs).
    config.CoursesItemRESTHandler.NEW_COURSE_ADDED_HOOKS[
        MODULE_NAME] = _new_course_counts

    # Delete the corresponding enrollments counters when a course is deleted.
    config.CourseDeleteHandler.COURSE_DELETED_HOOKS[
        MODULE_NAME] = delete_counters

    # Register analytic to show nice zoomable graph of enroll/unenroll rates.
    data_sources.Registry.register(EnrollmentsDataSource)
    visualization = analytics.Visualization(
        'enrollments', 'Enrollments', 'templates/enrollments.html',
        data_source_classes=[EnrollmentsDataSource])
    dashboard.DashboardHandler.add_sub_nav_mapping(
        'analytics', 'enrollments', 'Enrollments',
        action='analytics_enrollments',
        contents=analytics.TabRenderer([visualization]))
def register_analytic():
    data_sources.Registry.register(CertificatesEarnedDataSource)
    name = 'certificates_earned'
    title = 'Certificates Earned'
    certificates_earned = analytics.Visualization(
        name, title, 'certificates_earned.html',
        data_source_classes=[CertificatesEarnedDataSource])
    tabs.Registry.register('analytics', name, title,
                           analytics.TabRenderer([certificates_earned]))
Esempio n. 4
0
def register_analytic():
    data_sources.Registry.register(PeerReviewStatsSource)
    name = 'peer_review'
    title = 'Peer Review'
    peer_review = analytics.Visualization(
        name, title, 'stats.html',
        data_source_classes=[PeerReviewStatsSource])
    tabs.Registry.register('analytics', name, title,
                           analytics.TabRenderer([peer_review]))
Esempio n. 5
0
def register_analytic():
    data_sources.Registry.register(CertificatesEarnedDataSource)
    name = 'certificates_earned'
    title = 'Certificates'
    certificates_earned = analytics.Visualization(
        name, title, 'certificates_earned.html',
        data_source_classes=[CertificatesEarnedDataSource])
    dashboard.DashboardHandler.add_sub_nav_mapping(
        'analytics', name, title, action='analytics_certificates_earned',
        contents=analytics.TabRenderer([certificates_earned]))
Esempio n. 6
0
def register_analytic():
    data_sources.Registry.register(NotificationsDataSource)
    name = 'notifications'
    title = 'Notifications'
    visualization = analytics.Visualization(
        name,
        title,
        'stats.html',
        data_source_classes=[NotificationsDataSource])
    tabs.Registry.register('analytics', name, title,
                           analytics.TabRenderer([visualization]))
Esempio n. 7
0
def register_on_enable():
    data_sources.Registry.register(ExamsDataSource)
    data_sources.Registry.register(PupilsDataSource)
    data_sources.Registry.register(AnswersDataSource)

    exams = analytics.Visualization('exams', 'Exams',
                                    'fake_visualizations.html',
                                    [ExamsDataSource])
    pupils = analytics.Visualization('pupils', 'Pupils',
                                     'fake_visualizations.html',
                                     [PupilsDataSource])
    scoring = analytics.Visualization(
        'scoring', 'Scoring', 'fake_visualizations.html',
        [ExamsDataSource, PupilsDataSource, AnswersDataSource])

    tabs.Registry.register('analytics', 'exams', 'Exams',
                           analytics.TabRenderer([exams]))
    tabs.Registry.register('analytics', 'pupils', 'Pupils',
                           analytics.TabRenderer([pupils]))
    tabs.Registry.register('analytics', 'scoring', 'Scoring',
                           analytics.TabRenderer([scoring]))
Esempio n. 8
0
def register_analytic():
    data_sources.Registry.register(PeerReviewStatsSource)
    name = 'peer_review'
    title = 'Peer review'
    peer_review = analytics.Visualization(
        name, title, 'stats.html', data_source_classes=[PeerReviewStatsSource])
    dashboard.DashboardHandler.add_sub_nav_mapping(
        'analytics',
        name,
        title,
        action='analytics_peer_review',
        contents=analytics.TabRenderer([peer_review]),
        placement=7000)
Esempio n. 9
0
def register_analytic():
    data_sources.Registry.register(NotificationsDataSource)
    name = 'notifications'
    title = 'Notifications'
    visualization = analytics.Visualization(
        name,
        title,
        'stats.html',
        data_source_classes=[NotificationsDataSource])
    dashboard.DashboardHandler.add_sub_nav_mapping(
        'analytics',
        name,
        title,
        action='analytics_notifications',
        contents=analytics.TabRenderer([visualization]))
def register_analytic():
    """This isn't exactly an analytic, but we register that way to be included
    with the other analytics sub-tabs on the Dashboard."""
    name = 'sample_data'
    title = 'Generate Sample Data'
    sample_data = analytics.Visualization(
        name, title,
        os.path.join('modules', 'gen_sample_data', 'templates',
                     'sample_data.html'))
    dashboard.DashboardHandler.add_sub_nav_mapping(
        'analytics',
        name,
        title,
        action='analytics_sample_data',
        contents=analytics.TabRenderer([sample_data]))
Esempio n. 11
0
def register_tabs():
    multiple_choice_question = analytics.Visualization(
        'multiple_choice_question',
        'Multiple Choice Question',
        'multiple_choice_question.html',
        data_source_classes=[synchronous_providers.QuestionStatsSource])
    student_progress = analytics.Visualization(
        'student_progress',
        'Student Progress',
        'student_progress.html',
        data_source_classes=[synchronous_providers.StudentProgressStatsSource])
    enrollment_assessment = analytics.Visualization(
        'enrollment_assessment',
        'Enrollment/Assessment',
        'enrollment_assessment.html',
        data_source_classes=[
            synchronous_providers.StudentEnrollmentAndScoresSource
        ])
    assessment_difficulty = analytics.Visualization(
        'assessment_difficulty',
        'Assessment Difficulty',
        'assessment_difficulty.html',
        data_source_classes=[rest_providers.StudentAssessmentScoresDataSource])
    labels_on_students = analytics.Visualization(
        'labels_on_students',
        'Labels on Students',
        'labels_on_students.html',
        data_source_classes=[rest_providers.LabelsOnStudentsDataSource])
    question_answers = analytics.Visualization(
        'question_answers',
        'Question Answers',
        'question_answers.html',
        data_source_classes=[
            student_answers.QuestionAnswersDataSource,
            student_answers.CourseQuestionsDataSource,
            student_answers.CourseUnitsDataSource
        ])
    gradebook = analytics.Visualization(
        'gradebook',
        'Gradebook',
        'gradebook.html',
        data_source_classes=[
            student_answers.RawAnswersDataSource,
            student_answers.OrderedQuestionsDataSource
        ])
    clusters_visualization = analytics.Visualization(
        'clusters',
        'Cluster Manager',
        'clustering.html',
        data_source_classes=[clustering.ClusterDataSource])
    student_vectors_visualization = analytics.Visualization(
        'student_vectors',
        'Student Vectors',
        'student_vectors.html',
        data_source_classes=[clustering.TentpoleStudentVectorDataSource])
    stats_visualization = analytics.Visualization(
        'clustering_stats',
        'Clustering Statistics',
        'cluster_stats.html',
        data_source_classes=[clustering.ClusterStatisticsDataSource])

    dashboard.DashboardHandler.add_sub_nav_mapping(
        ANALYTICS,
        'students',
        'Students',
        action='analytics_students',
        contents=analytics.TabRenderer(
            [labels_on_students, student_progress, enrollment_assessment]),
        placement=1000)
    dashboard.DashboardHandler.add_sub_nav_mapping(
        ANALYTICS,
        'questions',
        'Questions',
        action='analytics_questions',
        contents=analytics.TabRenderer(
            [multiple_choice_question, question_answers]),
        placement=2000)
    dashboard.DashboardHandler.add_sub_nav_mapping(
        ANALYTICS,
        'assessments',
        'Assessments',
        action='analytics_assessments',
        contents=analytics.TabRenderer([assessment_difficulty]),
        placement=3000)
    dashboard.DashboardHandler.add_sub_nav_mapping(
        ANALYTICS,
        'gradebook',
        'Gradebook',
        action='analytics_gradebook',
        contents=analytics.TabRenderer([gradebook]),
        placement=5000)
    dashboard.DashboardHandler.add_sub_nav_mapping(
        ANALYTICS,
        'clustering',
        'Clustering',
        action='analytics_clustering',
        contents=analytics.TabRenderer([
            clusters_visualization, student_vectors_visualization,
            stats_visualization
        ]),
        placement=8000)