admin.py 2.64 KB
Newer Older
1 2 3 4
"""
Django admin page for grades models
"""
from config_models.admin import ConfigurationModelAdmin, KeyedConfigurationModelAdmin
5
from django.contrib import admin
6
from django.utils.translation import ugettext_lazy as _
7
from lms.djangoapps.grades.config.forms import CoursePersistentGradesAdminForm
8 9
from lms.djangoapps.grades.config.models import (
    ComputeGradesSetting,
10 11
    CoursePersistentGradesFlag,
    PersistentGradesEnabledFlag
12
)
13
from lms.djangoapps.grades.models import PersistentSubsectionGradeOverride, PersistentSubsectionGrade
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29


class CoursePersistentGradesAdmin(KeyedConfigurationModelAdmin):
    """
    Admin for enabling subsection grades on a course-by-course basis.
    Allows searching by course id.
    """
    form = CoursePersistentGradesAdminForm
    search_fields = ['course_id']
    fieldsets = (
        (None, {
            'fields': ('course_id', 'enabled'),
            'description': 'Enter a valid course id. If it is invalid, an error message will display.'
        }),
    )

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

class PersistentSubsectionGradeOverrideAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': (
                'grade',
                'earned_all_override',
                'earned_graded_override',
                'possible_all_override',
                'possible_graded_override',
            ),
            'description': 'Enter the ID of the subsection grade you want to override. You will probably need to '
                           'find this in the read replica in the grades_persistentsubsectiongrade table.'
        }),
    )
    list_display = [
        'get_course_id',
        'get_usage_key',
        'get_user_id',
        'earned_all_override',
        'earned_graded_override',
        'created',
        'modified',
    ]
    list_filter = ('grade__course_id', 'grade__user_id',)
    raw_id_fields = ('grade',)
    search_fields = ['grade__course_id', 'grade__user_id', 'grade__usage_key']

    def get_course_id(self, persistent_grade):
        return persistent_grade.grade.course_id

    def get_usage_key(self, persistent_grade):
        return persistent_grade.grade.usage_key

    def get_user_id(self, persistent_grade):
        return persistent_grade.grade.user_id

    get_course_id.short_description = _('Course Id')
    get_usage_key.short_description = _('Usage Key')
    get_user_id.short_description = _('User Id')


72 73
admin.site.register(CoursePersistentGradesFlag, CoursePersistentGradesAdmin)
admin.site.register(PersistentGradesEnabledFlag, ConfigurationModelAdmin)
74
admin.site.register(ComputeGradesSetting, ConfigurationModelAdmin)
75
admin.site.register(PersistentSubsectionGradeOverride, PersistentSubsectionGradeOverrideAdmin)