from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from . import models as userModel
from rest_framework_simplejwt.token_blacklist.models import OutstandingToken, BlacklistedToken
from django_rest_passwordreset.models import ResetPasswordToken


admin.site.unregister(OutstandingToken)
admin.site.unregister(BlacklistedToken)
admin.site.unregister(ResetPasswordToken)


@admin.register(userModel.User)
class MyUserAdmin(UserAdmin):
    list_display = ('first_name', 'last_name', 'username', 'mobile', 'is_staff')
    search_fields = ('first_name', 'last_name', 'username')
    staff_fieldsets = (
        ('اطلاعات شخصی', {'fields': ('first_name', 'last_name', 'mobile', 'email', 'gender', 'validated')}),
    )
    add_fieldsets = UserAdmin.add_fieldsets + (
        (None, {'fields': ('email', 'mobile')}),
    )

    def change_view(self, request, *args, **kwargs):
        if not request.user.is_superuser:
            try:
                self.fieldsets = self.staff_fieldsets
                response = super(MyUserAdmin, self).change_view(request, *args, **kwargs)
            finally:
                self.fieldsets = UserAdmin.fieldsets
            return response
        else:
            lst = list(self.fieldsets)
            lst[1] = ('اطلاعات شخصی', {'fields': ('first_name', 'last_name', 'mobile', 'email', 'gender', 'validated')})
            lst[2] = ('مجوز ها', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups')})
            self.fieldsets = tuple(lst)
            return super(MyUserAdmin, self).change_view(request, *args, **kwargs)


@admin.register(userModel.City)
class CityAdmin(admin.ModelAdmin):
    list_display = ('name', 'province')
    list_filter = ('province',)
    search_fields = ('name', 'province__name')
    ordering = ('id',)


@admin.register(userModel.Province)
class ProvinceAdmin(admin.ModelAdmin):
    ordering = ('id',)


@admin.register(userModel.Comment)
class CommentAdmin(admin.ModelAdmin):
    list_display = ('comment', 'user')
    search_fields = ('user__first_name', 'user__last_name', 'user__username')


@admin.register(userModel.Message)
class MessageAdmin(admin.ModelAdmin):
    list_display = ('title', 'send_type')
    search_fields = ('title',)
    list_filter = ('send_type',)
