from django.conf import settings
from django.contrib import admin
from django.contrib.humanize.templatetags.humanize import intcomma
from institute.models import Institute, TransferOwnershipHistory, APIKey, InstituteJWT, InstituteStudent

if settings.DJANGO_ADMIN_IS_ENABLED:

    class InstituteAdmin(admin.ModelAdmin):

        list_display = ('name', 'user','human_readable_balance', 'sandbox', 'modified_at')
        list_filter =('sandbox',) 

        def human_readable_balance(self, obj):
            raw_balance = obj.balance
            return intcomma(raw_balance)
    admin.site.register(Institute, InstituteAdmin)


    class TransferOwnershipHistoryAdmin(admin.ModelAdmin):
        list_display = ('institute', 'old_owner', 'new_owner',
                        'old_owner_accept_at', 'new_owner_accept_at', 'created_at')
        # search_fields = ('id', 'email')


    admin.site.register(TransferOwnershipHistory, TransferOwnershipHistoryAdmin)


    class APIKeyAdmin(admin.ModelAdmin):

        def api_key_preview(self, obj):
            return obj.api_key[-10:]

        # exclude = ('api_key',)
        list_display = ('api_key_preview', 'institute', 'created_at', 'modified_at', 'expire_at')
        # search_fields = ()
        readonly_fields = ('api_key',)


    admin.site.register(APIKey, APIKeyAdmin)


    class InstituteJWTAdmin(admin.ModelAdmin):
        def token_preview(self, obj):
            return obj.token[-10:]

        exclude = ('token',)
        list_display = ('token_preview', 'api_key', 'created_at', 'modified_at')
        # search_fields = ()
        readonly_fields = ('token_preview',)


    admin.site.register(InstituteJWT, InstituteJWTAdmin)


    class InstituteStudentAdmin(admin.ModelAdmin):
        list_display = (
            'id', 'referer_identity', 'institute', 'first_name', 'last_name', 'email', 'phone', 'wikiazma_account', 'modified_at',
            'created_at')
        # search_fields = ()
        readonly_fields = ()


    admin.site.register(InstituteStudent, InstituteStudentAdmin)

else:

    class InstituteAdmin(admin.ModelAdmin):

        def has_add_permission(self, request):
            return False

        def has_change_permission(self, request, obj=None):
            return False

        def has_delete_permission(self, request, obj=None):
            return False

        list_display = ('name', 'user', 'created_at', 'modified_at')
        # search_fields = ()
        # readonly_fields = ()


    admin.site.register(Institute, InstituteAdmin)


    class TransferOwnershipHistoryAdmin(admin.ModelAdmin):

        def has_add_permission(self, request):
            return False

        def has_change_permission(self, request, obj=None):
            return False

        def has_delete_permission(self, request, obj=None):
            return False

        list_display = ('institute', 'old_owner', 'new_owner',
                        'old_owner_accept_at', 'new_owner_accept_at', 'created_at')
        # search_fields = ('id', 'email')


    admin.site.register(TransferOwnershipHistory, TransferOwnershipHistoryAdmin)


    class APIKeyAdmin(admin.ModelAdmin):

        def has_add_permission(self, request):
            return False

        def has_change_permission(self, request, obj=None):
            return False

        def has_delete_permission(self, request, obj=None):
            return False

        def api_key_preview(self, obj):
            return obj.api_key[-10:]

        exclude = ('api_key',)
        list_display = ('api_key_preview', 'institute', 'created_at', 'modified_at', 'expire_at')
        # search_fields = ()
        readonly_fields = ('api_key_preview',)


    admin.site.register(APIKey, APIKeyAdmin)


    class InstituteJWTAdmin(admin.ModelAdmin):

        def has_add_permission(self, request):
            return False

        def has_change_permission(self, request, obj=None):
            return False

        def has_delete_permission(self, request, obj=None):
            return False

        def token_preview(self, obj):
            return obj.token[-10:]

        exclude = ('token',)
        list_display = ('token_preview', 'api_key', 'created_at', 'modified_at')
        # search_fields = ()
        readonly_fields = ('token_preview',)


    admin.site.register(InstituteJWT, InstituteJWTAdmin)
