Repository URL to install this package:
|
Version:
0.0.1 ▾
|
dj-kaos-users
/
admin.py
|
|---|
from django.contrib.auth import admin as auth_admin
from django.contrib.auth import get_user_model
from .forms import UserChangeForm, UserCreationForm
User = get_user_model()
class KaosUserAdmin(auth_admin.UserAdmin):
form = UserChangeForm
add_form = UserCreationForm
list_display = ('username', 'first_name', 'last_name', 'is_active', 'is_staff')
search_fields = ('username', 'first_name', 'last_name')
list_filter = ('is_staff', 'is_active')
readonly_fields = ('date_joined', 'last_login',)
fieldsets = auth_admin.UserAdmin.fieldsets[:2] + (
('Media', {'fields': ('avatar',)}),
) + auth_admin.UserAdmin.fieldsets[2:]
def get_queryset(self, request):
queryset = super().get_queryset(request)
if request.user.is_superuser:
return queryset
return queryset.filter(is_superuser=False)
def get_fieldsets(self, request, obj=None):
exclude = self.get_exclude(request, obj)
fieldsets = super().get_fieldsets(request, obj)
return [
(fieldset_name,
{'fields': [field for field in values['fields'] if field not in exclude]})
for fieldset_name, values in fieldsets
]
def get_exclude(self, request, obj=None):
exclude = super().get_exclude(request, obj)
if exclude:
exclude = list(exclude)
else:
exclude = []
if request.user.is_superuser:
return exclude
exclude += [
'is_superuser',
'user_permissions'
]
if obj and obj.is_superuser:
exclude += ['password']
return exclude
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser:
return True
return False