from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from apps.users.models import User

@admin.register(User)
class UserAdmin(admin.ModelAdmin):
    list_display = ('name', 'email', 'role', 'is_active', 'is_email_verified', 'refer_code')
    
    list_filter = ('role', 'is_active', 'is_email_verified', 'is_staff', 'is_superuser')
    
    search_fields = ('name', 'email', 'refer_code')
    

    fieldsets = (
        ('Personal Info', {
            'fields': ('name', 'email', 'password')
        }),
        ('Role & Permissions', {
            'fields': ('role', 'permissions', 'is_active', 'is_email_verified')
        }),
        ('Referral Info', {
            'fields': ('refer_code',)
        }),
        ('Administrative Rights', {
            'fields': ('is_staff', 'is_superuser', 'groups', 'user_permissions')
        }),
        ('Important Dates', {
            'fields': ('last_login', 'otp_expires_at')
        }),
    )

    readonly_fields = ('refer_code', 'last_login', 'otp_expires_at')

    def save_model(self, request, obj, form, change):
 
        if 'password' in form.changed_data:
            obj.set_password(obj.password)
        super().save_model(request, obj, form, change)

