admin.py 2.97 KB
Newer Older
1 2 3
"""
django admin pages for certificates models
"""
4 5
from operator import itemgetter

6
from config_models.admin import ConfigurationModelAdmin
7
from django import forms
8
from django.conf import settings
9 10
from django.contrib import admin

11
from certificates.models import (
12
    CertificateGenerationConfiguration,
13
    CertificateGenerationCourseSetting,
14 15 16
    CertificateHtmlViewConfiguration,
    CertificateTemplate,
    CertificateTemplateAsset,
17
    GeneratedCertificate
18
)
19
from util.organizations_helpers import get_organizations
20 21


22 23 24 25
class CertificateTemplateForm(forms.ModelForm):
    """
    Django admin form for CertificateTemplate model
    """
26 27 28 29 30 31 32 33
    def __init__(self, *args, **kwargs):
        super(CertificateTemplateForm, self).__init__(*args, **kwargs)
        organizations = get_organizations()
        org_choices = [(org["id"], org["name"]) for org in organizations]
        org_choices.insert(0, ('', 'None'))
        self.fields['organization_id'] = forms.TypedChoiceField(
            choices=org_choices, required=False, coerce=int, empty_value=None
        )
34 35 36 37 38 39
        languages = settings.CERTIFICATE_TEMPLATE_LANGUAGES.items()
        lang_choices = sorted(languages, key=itemgetter(1))
        lang_choices.insert(0, (None, 'All Languages'))
        self.fields['language'] = forms.ChoiceField(
            choices=lang_choices, required=False
        )
40 41 42

    class Meta(object):
        model = CertificateTemplate
43
        fields = '__all__'
44 45 46 47 48 49 50 51 52 53 54 55 56 57


class CertificateTemplateAdmin(admin.ModelAdmin):
    """
    Django admin customizations for CertificateTemplate model
    """
    list_display = ('name', 'description', 'organization_id', 'course_key', 'mode', 'is_active')
    form = CertificateTemplateForm


class CertificateTemplateAssetAdmin(admin.ModelAdmin):
    """
    Django admin customizations for CertificateTemplateAsset model
    """
58 59
    list_display = ('description', 'asset_slug',)
    prepopulated_fields = {"asset_slug": ("description",)}
60 61


62 63 64 65
class GeneratedCertificateAdmin(admin.ModelAdmin):
    """
    Django admin customizations for GeneratedCertificate model
    """
66
    raw_id_fields = ('user',)
67
    show_full_result_count = False
68 69 70 71
    search_fields = ('course_id', 'user__username')
    list_display = ('id', 'course_id', 'mode', 'user')


72 73 74 75
class CertificateGenerationCourseSettingAdmin(admin.ModelAdmin):
    """
    Django admin customizations for CertificateGenerationCourseSetting model
    """
76
    list_display = ('course_key', 'self_generation_enabled', 'language_specific_templates_enabled')
77 78 79 80
    search_fields = ('course_key',)
    show_full_result_count = False


81
admin.site.register(CertificateGenerationConfiguration)
82
admin.site.register(CertificateGenerationCourseSetting, CertificateGenerationCourseSettingAdmin)
83
admin.site.register(CertificateHtmlViewConfiguration, ConfigurationModelAdmin)
84 85
admin.site.register(CertificateTemplate, CertificateTemplateAdmin)
admin.site.register(CertificateTemplateAsset, CertificateTemplateAssetAdmin)
86
admin.site.register(GeneratedCertificate, GeneratedCertificateAdmin)