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)