from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin as AuthUserAdmin
#from django.core.exceptions import PermissionDenied


from .models import Profile
#from .forms import UserCreationForm
from adhesions.admin import AdhesionInline


class ProfileInline(admin.StackedInline):
    model = Profile

    def has_add_permission(self, request):
        return False

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


class UserAdmin(AuthUserAdmin):
    list_display = AuthUserAdmin.list_display + ('adherent_id',)
    inlines = (ProfileInline, AdhesionInline,)

    def adherent_id(self, user):
        adherent = user.profile.adhesion
        if adherent:
            return adherent.id
    adherent_id.short_description = 'Numéro d’adhérent'
#
#    def get_readonly_fields(self, request, obj=None):
#        readonly_fields = super().get_readonly_fields(request, obj)
#        if obj and not request.user.is_superuser:
#            readonly_fields += ('username',)
#        return readonly_fields
#
#    def get_fieldsets(self, request, obj=None):
#        if request.user.is_superuser:
#            return (
#                AuthUserAdmin.fieldsets[0],
#                AuthUserAdmin.fieldsets[1],
#                (AuthUserAdmin.fieldsets[2][0], {
#                    'classes': ('collapse',),
#                    'fields': ('is_active', 'is_staff', 'is_superuser', 'groups',), # removing of user_permissions
#                }),
#                (AuthUserAdmin.fieldsets[3][0], {
#                    'classes': ('collapse',),
#                    'fields': AuthUserAdmin.fieldsets[3][1]['fields'],
#                }),
#            )
#        if obj:
#            return (
#                AuthUserAdmin.fieldsets[0],  # Note: password is mandatory (but readonly)
#                AuthUserAdmin.fieldsets[1],
#            )
#        else:
#            return (
#                (None, {'fields': ('username',)}),
#                AuthUserAdmin.fieldsets[1],
#            )
#
#    def get_form(self, request, obj=None, **kwargs):
#        # get_inlines does not exists :-(
#        if obj:
#            self.inlines = (ProfileInline, AdherentInline,)
#        else:
#            self.inlines = ()
#
#        if request.user.is_superuser or obj:
#            return super().get_form(request, obj, **kwargs)
#        else:
#            # This creation form does not ask for a password
#            return UserCreationForm
#
#    def user_change_password(self, request, id):
#        if not request.user.is_superuser:
#            # Les non admin peuvent modifier le mot de passe des utilisateurs qui ne sont ni staff ni admin
#            user = User.objects.get(pk=id)
#            if user.is_staff or user.is_superuser:
#                raise PermissionDenied
#        return super().user_change_password(request, id)


admin.site.unregister(User)
admin.site.register(User, UserAdmin)