Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django import forms
- from django.contrib import admin
- from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
- from django.contrib.auth.forms import ReadOnlyPasswordHashField
- from .models import ApiUser
- class UserCreationForm(forms.ModelForm):
- """A form for creating new users. Includes all the required
- fields, plus a repeated password."""
- password1 = forms.CharField(label="Password", widget=forms.PasswordInput)
- password2 = forms.CharField(label="Password confirmation", widget=forms.PasswordInput)
- class Meta:
- model = ApiUser
- 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(UserCreationForm, self).save(commit=False)
- user.set_password(self.cleaned_data["password1"])
- if commit:
- user.save()
- return user
- class UserChangeForm(forms.ModelForm):
- """A form for updating users. Includes all the fields on
- the user, but replaces the password field with admin's
- password hash display field.
- """
- password = ReadOnlyPasswordHashField()
- class Meta:
- model = ApiUser
- fields = ("email", "password", "is_active", "is_admin")
- def clean_password(self):
- # Regardless of what the user provides, return the initial value.
- # This is done here, rather than on the field, because the
- # field does not have access to the initial value
- return self.initial["password"]
- class UserAdmin(BaseUserAdmin):
- # Forms for creating and editing users
- form = UserChangeForm
- add_form = UserCreationForm
- list_display = ("email", "is_active", "is_admin")
- list_filter = ("is_active",)
- # Specify how to display users in the admin console
- fieldsets = (
- (None, {"fields": ("email", "password")}),
- ("Permissions", {"fields": ("is_admin",)}),
- )
- # add_fieldsets is not a standard ModelAdmin attribute. Django"s UserAdmin
- # overrides get_fieldsets to use this attribute when creating a user.
- add_fieldsets = (
- (
- None,
- {
- "classes": ("wide",),
- "fields": ("email", "password1", "password2")
- }
- ),
- )
- search_fields = ("email",)
- ordering = ("email",)
- filter_horizontal = ()
- admin.site.register(ApiUser, UserAdmin)
Add Comment
Please, Sign In to add comment