 
from django.contrib import admin  
from django.contrib.auth.models import Group 
from django.contrib.auth.admin  import UserAdmin

from apps.accounts.models import Account

# Register your models here. 
 
# Unregister the default GroupAdmin
admin.site.unregister(Group)

# Register the Account model
@admin.register(Account)
class AccountAdmin(UserAdmin):
    model = Account
 
    # The fields to be used in displaying the User model.
    # These override the definitions on the base UserModelAdmin that reference specific fields on auth.User.
    list_display = ("email", "username", "full_name", "role", "is_verified", "is_active", "is_admin", "is_staff", "date_joined", "last_login")
    list_filter = ("is_admin", "is_staff", "is_active", "role", "groups")
    fieldsets = (
        ("User Credentials", {"fields": ("email", "role", "password")}),
        ("Personal info", {"fields": ("username", "first_name", "last_name")}),
        ("Permissions", {
            "classes": ("collapse",), 
            "fields": (
                "is_staff",
                "is_admin",
                "is_active",
                "is_verified",
                "is_superuser",
                "groups",
                "user_permissions",
            )
        }),
        ("Important dates", {
            "classes": ("collapse",), 
            "fields": ("last_login", "date_joined")
        }),
    )
    # Specify read-only fields
    readonly_fields = ("date_joined",)
    # add_fieldsets is not a standard ModelAdmin attribute. 
    # UserModelAdmin overrides get_fieldsets to use this attribute when creating a user. 
    # Add fieldsets for creating a new user
    add_fieldsets = (
        (None, {
            "classes": ("wide",),
            "fields": ("email", "first_name", "last_name", "role", "password1", "password2"),
        }),
    )
    search_fields = ("email", "username", "role",)
    ordering = ("email" ,"-date_joined", "id") 
    filter_horizontal = ("groups", "user_permissions",)
 
 

 
