from django.contrib import admin
from question.models import Question
from .models import QuestionBank, QuestionBankDefaultIcon
from django.utils.html import format_html


@admin.action(description='Recalculate questions count')
def questions_count_calculator(modeladmin, request, queryset):
    for item in queryset:
        item.questions_count = Question.objects.filter(
            question_bank=item).count()
        item.save()


class QuestionBankAdmin(admin.ModelAdmin):
    actions = [questions_count_calculator]

    def icon_preview(self, obj):
        if obj.icon:
            return format_html('<img src="{0}" style="width: 50px;" />'.format(obj.icon.url))

    list_display = ('name', 'institute', 'questions_count', 'accessibility',
                    'archived', 'featured', 'icon_preview', 'modified_at', 'created_at')
    search_fields = ('name',)
    list_filter = ['featured', 'accessibility', 'created_at']
    readonly_fields = ('questions_count',)


admin.site.register(QuestionBank, QuestionBankAdmin)


class QuestionBankIconAdmin(admin.ModelAdmin):

    def icon_preview(self, obj):
        return format_html('<img src="{0}" style="width: 50px;" />'.format(obj.icon.url))

    list_display = ('icon_preview',)
    list_filter = ['created_at']


admin.site.register(QuestionBankDefaultIcon, QuestionBankIconAdmin)
