Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- from django.contrib.auth.models import BaseUserManager, AbstractBaseUser
- class MyUserManager(BaseUserManager):
- def create_user(self, email, dob, password = None):
- user = self.model(
- email = self.normalize_email(email),
- dob = dob
- )
- user.set_password(password)
- user.save(using=self._db)
- return user
- def create_superuser(self, email, dob, password):
- suser = self.create_user(email, password=password, dob=dob)
- suser.is_admin = True
- suser.save(using=self._db)
- return suser
- class MyUser(AbstractBaseUser):
- email = models.EmailField(max_length=255, unique=True)
- dob = models.DateField()
- is_active = models.BooleanField(default=True)
- is_admin = models.BooleanField(default=False)
- objects = MyUserManager()
- USERNAME_FIELD = 'email'
- REQUIRED_FIELD = ['dob']
- @property
- def is_staff(self):
- return self._is_staff
- from django.contrib import admin
- from django.contrib.auth.admin import UserAdmin
- from django.contrib.auth.models import Group
- from django import forms
- from django.contrib.auth.forms import ReadOnlyPasswordHashField
- from .models import MyUser
- class UserCreationForm(forms.ModelForm):
- password1 = forms.CharField(widget=forms.PasswordInput)
- password2 = forms.CharField(widget=forms.PasswordInput)
- class Meta:
- model = MyUser
- fields = ('email', 'dob')
- def save(self, commit=True):
- user = super(UserCreationForm, self).save(commit=False)
- user.set_password(self.cleaned_data["password1"])
- if commit:
- user.save()
- return user
- class UserChangeForm(forms.ModelForm):
- password = ReadOnlyPasswordHashField
- class Meta:
- model = MyUser
- fields = ('email', 'password', 'dob', 'is_active', 'is_admin')
- def clean_password(self):
- return self.initial["password"]
- class MyAdmin(UserAdmin):
- form = UserChangeForm ##
- add_form = UserCreationForm
- list_display = ('email', 'dob', 'is_admin')
- list_filter = ('is_admin',)
- fieldsets = (
- (None, {'fields': ('email', 'password',)}),
- ('Personal info', {'fields': ('dob',)}),
- ('Permisions', {'fields': ('is_admin',)}),
- )
- add_fieldsets = (
- (None, {
- 'classes': ('wide',),
- 'fields': ('email','dob', 'password1', 'password2')
- }
- )
- )
- search_fields = ('email',)
- ordering = ('email',)
- filter_horizontal = ()
- admin.site.register(MyUser, MyAdmin)
- admin.site.unregister(Group)
- AUTH_USER_MODEL = 'client.MyUser'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement