Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.contrib import admin
- from .models import User
- from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
- from .forms import UserAdminCreationForm, UserAdminChangeForm
- class MyUserAdmin(BaseUserAdmin):
- form = UserAdminChangeForm
- add_form = UserAdminCreationForm
- list_display = ('email', 'first_name', 'last_name', 'is_staff', 'is_active', 'is_email_verified')
- def get_list_filter(self, request):
- if request.user.is_superuser:
- return ['groups']
- else:
- return ['is_staff', 'is_active', 'is_email_verified']
- readonly_fields = ('last_login', 'date_joined',)
- fieldsets = (
- (None, {'fields': ('email', 'password')}),
- ('Personal info', {'fields': ('first_name','last_name')}),
- ('Permissions', {'fields': ('is_active','is_staff', 'groups')}),
- ('Important dates', {'fields': ('last_login', 'date_joined')}),
- )
- add_fieldsets = (
- (None, {
- 'classes': ('wide',),
- 'fields': ('first_name','last_name','email', 'password1', 'password2', 'groups')}
- ),
- )
- search_fields = ('first_name', 'last_name', 'email',)
- ordering = ('email',)
- filter_horizontal = ()
- def get_queryset(self, request):
- qs = super().get_queryset(request)
- if request.user.is_superuser:
- return qs
- qs = qs.filter(groups__id__in=request.user.groups.all())
- return qs
- admin.site.register(User, MyUserAdmin)
- class UserAdminCreationForm(forms.ModelForm):
- password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
- password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)
- class Meta:
- User = get_user_model()
- model = User
- fields = ('email',)
- def clean_password2(self):
- # Check that the two password entries match
- password1 = self.cleaned_data.get("password1")
- password2 = self.cleaned_data.get("password2")
- if password1 and password2 and password1 != password2:
- raise forms.ValidationError("Passwords don't match")
- return password2
- def save(self, commit=True):
- # Save the provided password in hashed format
- user = super(UserAdminCreationForm, self).save(commit=False)
- user.set_password(self.cleaned_data["password1"])
- user.is_staff = True
- if commit:
- user.save()
- return user
- class UserAdminChangeForm(forms.ModelForm):
- password = ReadOnlyPasswordHashField()
- class Meta:
- User = get_user_model()
- model = User
- fields = ('email', 'password', 'is_active','is_staff', 'groups')
- def clean_password(self):
- return self.initial["password"]
Add Comment
Please, Sign In to add comment