class IssuerAdmin(DjangoObjectActions, ModelAdmin):

    readonly_fields = ('created_at', 'created_by', 'old_json', 'source',
                       'source_url', 'entity_id', 'archived')
    list_display = ('name_english', 'name_dutch', 'img', 'entity_id',
                    'created_by', 'created_at', 'archived',
                    admin_list_linkify('faculty', 'name_english'),
                    admin_list_linkify('institution', 'name_english'))
    list_display_links = ('name_english', )
    list_filter = ('created_at', )
    search_fields = ('name_english', 'name_dutch', 'entity_id')
    fieldsets = (
        ('Metadata', {
            'fields':
            ('created_by', 'created_at', 'source', 'source_url', 'entity_id'),
            'classes': ("collapse", )
        }),
        (None, {
            'fields':
            ('image_dutch', 'image_english', 'name_english', 'url_english',
             'name_dutch', 'url_dutch', 'email', 'description_english',
             'description_dutch', 'badgrapp', 'archived')
        }),
        ('JSON', {
            'fields': ('old_json', )
        }),
        ('Faculties', {
            'fields': ('faculty', )
        }),
    )
    inlines = [IssuerStaffInline, IssuerExtensionInline]
    change_actions = ['redirect_badgeclasses']

    def img(self, obj):
        try:
            return '<img src="{}" width="32"/>'.format(obj.image.url)
        except ValueError:
            return obj.image

    img.short_description = 'Image'
    img.allow_tags = True

    def redirect_badgeclasses(self, request, obj):
        return HttpResponseRedirect(
            reverse('admin:issuer_badgeclass_changelist') +
            '?issuer__id={}'.format(obj.id))

    redirect_badgeclasses.label = "BadgeClasses"
    redirect_badgeclasses.short_description = "See this issuer's defined BadgeClasses"
class TermsAdmin(ModelAdmin):
    list_display = ('terms_type', admin_list_linkify('institution', 'name'),
                    'version', 'created_at', 'terms_url_count')
    readonly_fields = ('created_at', 'created_by', 'updated_at', 'updated_by', 'entity_id')

    inlines = [TermsUrlInline]

    def terms_url_count(self, obj):
        return len(obj.terms_urls.all())
class BadgeUserAdmin(UserAdmin):
    readonly_fields = ('email', 'first_name', 'last_name', 'entity_id', 'date_joined', 'last_login', 'username', 'entity_id')
    list_display = ('last_name', 'first_name', 'email', 'is_active', 'is_staff', 'date_joined',
                    admin_list_linkify('institution', 'name'))
    list_filter = ('is_active', 'is_staff', 'is_superuser', 'date_joined', 'last_login')
    search_fields = ('email', 'first_name', 'last_name', 'username', 'entity_id')
    fieldsets = (
        ('Metadata', {'fields': ('entity_id', 'username', 'date_joined',), 'classes': ('collapse',)}),
        (None, {'fields': ('email', 'first_name', 'last_name')}),
        ('Access', {'fields': ('is_active', 'is_staff', 'password')}),
        ('Permissions', {'fields': ('groups',)}),
    )
    filter_horizontal = ('groups', 'user_permissions', 'faculty',)
    inlines = [
        EmailAddressInline,
    ]
class TermsUrlAdmin(ModelAdmin):
    list_display = ('url', 'language', admin_list_linkify('terms', 'terms_type'))
Exemple #5
0
class StudentsEnrolledAdmin(admin.ModelAdmin):
    list_display = ('date_created', 'date_consent_given',
                    'date_awarded', 'badge_instance',
                    admin_list_linkify('badge_class', 'name'),
                    admin_list_linkify('user', 'full_name'))
Exemple #6
0
class FacultyAdmin(admin.ModelAdmin):

    list_display = ('name_english', 'name_dutch')
    readonly_fields = ('entity_id', 'created_by', 'updated_by', 'institution')
    list_display = ('name_english', 'entity_id',
                    admin_list_linkify('institution', 'name'))
Exemple #7
0
class InstitutionStaffAdmin(ModelAdmin):

    list_display = ('user', admin_list_linkify('institution', 'name'), 'may_create',
                    'may_read', 'may_update', 'may_delete', 'may_award', 'may_sign', 'may_administrate_users')
Exemple #8
0
class BadgeclassStaffAdmin(ModelAdmin):

    list_display = ('user', admin_list_linkify('badgeclass', 'name'), 'may_create', 'may_read', 'may_update',
                    'may_delete', 'may_award', 'may_sign', 'may_administrate_users')
Exemple #9
0
class BadgeClassAdmin(DjangoObjectActions, ModelAdmin):
    readonly_fields = ('created_at', 'created_by', 'old_json', 'source',
                       'source_url', 'entity_id')
    list_display = ('name', 'badge_image', 'entity_id', 'archived',
                    admin_list_linkify('issuer', 'name'),
                    admin_list_linkify('institution', 'name'))
    list_display_links = (
        'badge_image',
        'name',
    )
    list_filter = ('created_at', )
    search_fields = (
        'name',
        'entity_id',
        'issuer__name',
    )
    raw_id_fields = ('issuer', )
    fieldsets = (
        ('Metadata', {
            'fields':
            ('created_by', 'created_at', 'source', 'source_url', 'entity_id'),
            'classes': ("collapse", )
        }),
        (None, {
            'fields': ('issuer', 'image', 'name', 'description', 'archived')
        }),
        ('Criteria', {
            'fields': (
                'criteria_url',
                'criteria_text',
            )
        }),
        ('JSON', {
            'fields': ('old_json', )
        }),
    )
    inlines = [
        BadgeClassTagInline,
        BadgeClassAlignmentInline,
        BadgeClassExtensionInline,
    ]
    change_actions = [
        'redirect_issuer', 'redirect_instances', 'redirect_pathwaybadges'
    ]

    def badge_image(self, obj):
        return '<img src="{}" width="32"/>'.format(
            obj.image.url) if obj.image else ''

    badge_image.short_description = 'Badge'
    badge_image.allow_tags = True

    def issuer_link(self, obj):
        return '<a href="{}">{}</a>'.format(
            reverse("admin:issuer_issuer_change", args=(obj.issuer.id, )),
            obj.issuer.name)

    issuer_link.allow_tags = True

    def redirect_instances(self, request, obj):
        return HttpResponseRedirect(
            reverse('admin:issuer_badgeinstance_changelist') +
            '?badgeclass__id={}'.format(obj.id))

    redirect_instances.label = "Instances"
    redirect_instances.short_description = "See awarded instances of this BadgeClass"

    def redirect_issuer(self, request, obj):
        return HttpResponseRedirect(
            reverse('admin:issuer_issuer_change', args=(obj.issuer.id, )))

    redirect_issuer.label = "Issuer"
    redirect_issuer.short_description = "See this Issuer"

    def redirect_pathwaybadges(self, request, obj):
        return HttpResponseRedirect(
            reverse('admin:pathway_pathwayelementbadge_changelist') +
            '?badgeclass__id={}'.format(obj.id))

    redirect_pathwaybadges.label = "Pathway Badges"
    redirect_pathwaybadges.short_description = "Pathway Badges"
Exemple #10
0
class BadgeInstanceExtensionAdmin(ModelAdmin):
    list_display = ('name', admin_list_linkify('badge_instance'))
    search_fields = ('name', 'original_json')
Exemple #11
0
class IssuerExtensionAdmin(ModelAdmin):
    list_display = ('name', admin_list_linkify('issuer', 'name'))
    search_fields = ('name', 'original_json')
Exemple #12
0
class BadgeInstanceAdmin(DjangoObjectActions, ModelAdmin):
    readonly_fields = ('created_at', 'created_by', 'updated_at', 'updated_by',
                       'image', 'entity_id', 'old_json', 'salt', 'entity_id',
                       'source', 'source_url')
    list_display = ('badge_image', 'user', 'entity_id',
                    admin_list_linkify('badgeclass', 'name'),
                    admin_list_linkify('issuer', 'name'))
    list_display_links = ('badge_image', )
    list_filter = ('created_at', )
    search_fields = ('recipient_identifier', 'entity_id', 'badgeclass__name',
                     'issuer__name')
    raw_id_fields = ('badgeclass', 'issuer')
    fieldsets = (
        ('Metadata', {
            'fields': ('source', 'source_url', 'created_by', 'created_at',
                       'updated_by', 'updated_at', 'entity_id', 'salt'),
            'classes': ("collapse", )
        }),
        ('Badgeclass', {
            'fields': ('badgeclass', 'issuer')
        }),
        ('Assertion', {
            'fields':
            ('public', 'acceptance', 'recipient_type', 'recipient_identifier',
             'image', 'issued_on', 'expires_at')
        }),
        ('Revocation', {
            'fields': ('revoked', 'revocation_reason')
        }),
        ('JSON', {
            'fields': ('old_json', )
        }),
    )
    actions = ['rebake']
    change_actions = ['redirect_issuer', 'redirect_badgeclass']
    inlines = [BadgeInstanceExtensionInline]

    def rebake(self, request, queryset):
        for obj in queryset:
            obj.rebake(save=True)

    rebake.short_description = "Rebake selected badge instances"

    def badge_image(self, obj):
        try:
            return '<img src="{}" width="32"/>'.format(obj.image.url)
        except ValueError:
            return obj.image

    badge_image.short_description = 'Badge'
    badge_image.allow_tags = True

    def has_add_permission(self, request):
        return False

    def redirect_badgeclass(self, request, obj):
        return HttpResponseRedirect(
            reverse('admin:issuer_badgeclass_change',
                    args=(obj.badgeclass.id, )))

    redirect_badgeclass.label = "BadgeClass"
    redirect_badgeclass.short_description = "See this BadgeClass"

    def redirect_issuer(self, request, obj):
        return HttpResponseRedirect(
            reverse('admin:issuer_issuer_change', args=(obj.issuer.id, )))

    redirect_issuer.label = "Issuer"
    redirect_issuer.short_description = "See this Issuer"