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

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

class CustomUserAdmin(UserAdmin):
    model = CustomUser
    # Adiciona apenas os campos personalizados
    fieldsets = UserAdmin.fieldsets + (
        (
            'Informações Personalizadas',
            {
                'fields': ('tenant',)
            },
        ),
    )
    # Campos para exibição na lista
    list_display = ['username', 'email', 'first_name', 'last_name', 'is_staff', 'tenant']
    # Campos disponíveis para busca
    search_fields = ['username', 'email', 'tenant__name']

admin.site.register(CustomUser, CustomUserAdmin)


from django import forms

class CustomGroupAdminForm(forms.ModelForm):
    class Meta:
        model = Group
        fields = '__all__'

    users = forms.ModelMultipleChoiceField(
        queryset=CustomUser.objects.all(),
        required=False,
        widget=admin.widgets.FilteredSelectMultiple('Usuários', is_stacked=False)
    )

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        if self.instance.pk:
            self.fields['users'].initial = self.instance.user_set.all()

    def save(self, commit=True):
        group = super().save(commit=False)
        if commit:
            group.save()
        if group.pk:
            group.user_set.set(self.cleaned_data['users'])
        return group


# Substituir a exibição padrão do Group
class CustomGroupAdmin(admin.ModelAdmin):
    form = CustomGroupAdminForm

admin.site.unregister(Group)
admin.site.register(Group, CustomGroupAdmin)
