コード例 #1
0
    def handle(self, *args, **options):
        print "Computing discipline statistics"

        for division_set in DivisionSet.objects.all():
            for discipline in Discipline.objects.all():
                print "Computing... {}: {}".format(discipline, division_set)
                discipline_stats, created = DisciplineStats.objects.get_or_create(
                    discipline=discipline,
                    division_set=division_set,
                )

                discipline_distribution = Counter()
                for subject in discipline.subject_set.all():
                    subject_stats = SubjectStats.objects.get(
                        subject=subject, division_set=division_set)
                    discipline_distribution += Counter(
                        subject_stats.distribution)
                discipline_stats.distribution = discipline_distribution

                discipline_stats.mean, discipline_stats.stdev, \
                discipline_stats.letter_grades = utils.distribution_stats(
                    discipline_distribution)

                discipline_stats.save()

            print "Computing ranks..."
            discipline_stats_list = DisciplineStats.objects.filter(
                letter_grades__gte=1000).filter(
                    division_set=division_set).order_by('mean')
            count = discipline_stats_list.count()
            for rank, stat in enumerate(discipline_stats_list):
                stat.my_rank = rank + 1
                stat.rank_count = count
                stat.save()
コード例 #2
0
    def handle(self, *args, **options):
        print "Computing division statistics"

        # Create the division sets if they don't exist
        if not DivisionSet.objects.exists():
            print "Creating division sets"
            init_division_sets()

        for division_set in DivisionSet.objects.all():
            for subject in Subject.objects.all():
                print "Computing... {}: {}".format(subject, division_set)
                subject_stats, created = SubjectStats.objects.get_or_create(subject=subject,
                                                           division_set=division_set)

                subject_distribution = Counter()
                divisions = division_set.data['divisions']
                courses = subject.course_set.filter(division__in=divisions)
                for course in courses:
                    subject_distribution += Counter(course.distribution)
                subject_stats.distribution = subject_distribution

                subject_stats.mean, subject_stats.stdev, \
                subject_stats.letter_grades = utils.distribution_stats(
                    subject_distribution)

                subject_stats.save()

            print "Computing ranks..."
            subject_stats_list = SubjectStats.objects.filter(letter_grades__gte=1000).filter(division_set=division_set).order_by('mean')
            count = subject_stats_list.count()
            for rank, stat in enumerate(subject_stats_list):
                stat.my_rank = rank + 1
                stat.rank_count = count
                stat.save()
コード例 #3
0
ファイル: views.py プロジェクト: dailycal-projects/grades
    def get_context_data(self, **kwargs):
        context = {}

        division = DivisionSet.objects.get(slug='undergraduate')

        courses = []
        overall_distribution = Counter()
        subject_stats = SubjectStats.objects.filter(division_set=division) \
                .filter(letter_grades__gte=1000).order_by('mean')
        for stat in subject_stats:
            if 'Interdisciplinary' in stat.subject.canonical:
                continue

            info = {}
            info['short_name'] = stat.subject.short_name
            info['full_name'] = stat.subject.canonical
            info['slug'] = stat.subject.slug
            info['discipline'] = stat.subject.discipline.name
            info['avg'] = stat.mean
            info['grade'] = utils.lettergrade(stat.mean)
            info['std'] = stat.stdev
            info['num'] = stat.letter_grades
            info['dist'] = stat.formatted_distribution
            info['rank'] = stat.my_rank

            overall_distribution += Counter(stat.distribution)

            courses.append(info)

        context['data'] = json.dumps(courses)

        context['overall_avg'], context['overall_std'], context['overall_num'] \
         = utils.distribution_stats(overall_distribution)

        return context
コード例 #4
0
    def handle(self, *args, **options):
        print "Computing course statistics"
        for course in Course.objects.all():
            print "Computing... {}".format(course)
            course_distribution = Counter()
            for section in course.section_set.all():
                course_distribution += Counter(section.distribution)
            course.distribution = course_distribution

            course.mean, course.stdev, course.letter_grades = utils.distribution_stats(
                course.distribution)
            course.save()
コード例 #5
0
    def handle(self, *args, **options):
        print "Computing course statistics"
        for course in Course.objects.all():
            print "Computing... {}".format(course)
            course_distribution = Counter()
            for section in course.section_set.all():
                course_distribution += Counter(section.distribution)
            course.distribution = course_distribution

            course.mean, course.stdev, course.letter_grades = utils.distribution_stats(
                course.distribution)
            course.save()
コード例 #6
0
    def handle(self, *args, **options):
        print "Computing section statistics"
        for section in Section.objects.all():
            print "Computing... {}".format(section)

            grade_counts = section.gradecount_set.filter(grade__letter=True)

            section_distribution = Counter()
            for gc in grade_counts:
                name = gc.grade.name
                section_distribution[name] += gc.count
            section.distribution = section_distribution

            section.mean, section.stdev, section.letter_grades = utils.distribution_stats(
                section.distribution)

            section.save()
コード例 #7
0
    def handle(self, *args, **options):
        print "Computing section statistics"
        for section in Section.objects.all():
            print "Computing... {}".format(section)

            grade_counts = section.gradecount_set.filter(grade__letter=True)

            section_distribution = Counter()
            for gc in grade_counts:
                name = gc.grade.name
                section_distribution[name] += gc.count
            section.distribution = section_distribution

            section.mean, section.stdev, section.letter_grades = utils.distribution_stats(
                section.distribution)

            section.save()
コード例 #8
0
    def handle(self, *args, **options):
        print "Computing division statistics"

        # Create the division sets if they don't exist
        if not DivisionSet.objects.exists():
            print "Creating division sets"
            init_division_sets()

        for division_set in DivisionSet.objects.all():
            for subject in Subject.objects.all():
                print "Computing... {}: {}".format(subject, division_set)
                subject_stats, created = SubjectStats.objects.get_or_create(
                    subject=subject, division_set=division_set)

                subject_distribution = Counter()
                divisions = division_set.data['divisions']
                courses = subject.course_set.filter(division__in=divisions)
                for course in courses:
                    subject_distribution += Counter(course.distribution)
                subject_stats.distribution = subject_distribution

                subject_stats.mean, subject_stats.stdev, \
                subject_stats.letter_grades = utils.distribution_stats(
                    subject_distribution)

                subject_stats.save()

            print "Computing ranks..."
            subject_stats_list = SubjectStats.objects.filter(
                letter_grades__gte=1000).filter(
                    division_set=division_set).order_by('mean')
            count = subject_stats_list.count()
            for rank, stat in enumerate(subject_stats_list):
                stat.my_rank = rank + 1
                stat.rank_count = count
                stat.save()
コード例 #9
0
    def handle(self, *args, **options):
        print "Computing discipline statistics"

        for division_set in DivisionSet.objects.all():
            for discipline in Discipline.objects.all():
                print "Computing... {}: {}".format(discipline, division_set)
                discipline_stats, created = DisciplineStats.objects.get_or_create(
                    discipline=discipline, division_set=division_set
                )

                discipline_distribution = Counter()
                for subject in discipline.subject_set.all():
                    subject_stats = SubjectStats.objects.get(subject=subject, division_set=division_set)
                    discipline_distribution += Counter(subject_stats.distribution)
                discipline_stats.distribution = discipline_distribution

                discipline_stats.mean, discipline_stats.stdev, discipline_stats.letter_grades = utils.distribution_stats(
                    discipline_distribution
                )

                discipline_stats.save()

            print "Computing ranks..."
            discipline_stats_list = (
                DisciplineStats.objects.filter(letter_grades__gte=1000)
                .filter(division_set=division_set)
                .order_by("mean")
            )
            count = discipline_stats_list.count()
            for rank, stat in enumerate(discipline_stats_list):
                stat.my_rank = rank + 1
                stat.rank_count = count
                stat.save()