Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.contrib import admin
- from django.contrib.auth.models import Group
- from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
- from .forms import UserAdminPostForm, UserAdminUpdateForm
- from .models import User
- class UserAdmin(BaseUserAdmin):
- form = UserAdminUpdateForm
- add_form = UserAdminPostForm
- list_display = ('email', 'created', 'admin')
- list_filter = ('admin',)
- fieldsets = (
- ('Account', {'fields': ('email', 'password')}),
- ('Profile', {'fields': ()}),
- ('Permissions', {'fields': ('active', 'staff', 'admin',)}),
- )
- add_fieldsets = (
- (None, {
- 'classes': ('wide',),
- 'fields': ('email', 'password1', 'password2', 'staff', 'admin',)}
- ),
- )
- search_fields = ('email',)
- ordering = ('email',)
- filter_horizontal = ()
- admin.site.register(User, UserAdmin)
- from django import forms
- from django.contrib.auth.forms import ReadOnlyPasswordHashField
- from .models import User
- class UserAdminPostForm(forms.ModelForm):
- password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
- password2 = forms.CharField(label='Password Confirmation', widget=forms.PasswordInput)
- class Meta:
- model = User
- fields = ('email', )
- def confirm_password(self):
- 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):
- user = super(UserAdminPostForm, self).save(commit=False)
- user.set_password(self.cleaned_data["password2"])
- if commit:
- user.save()
- return user
- class UserAdminUpdateForm(forms.ModelForm):
- password = ReadOnlyPasswordHashField()
- class Meta:
- model = User
- fields = ('email', 'password', 'active', 'staff', 'admin', )
- def confirm_password(self):
- return self.initial["password"]
- import uuid
- from django.db import models
- from django.contrib.auth.models import (BaseUserManager, AbstractBaseUser)
- def hex_uuid():
- return uuid.uuid4().hex
- class Model(models.Model):
- class Meta:
- abstract = True
- id = models.CharField(
- verbose_name='id',
- max_length=32,
- primary_key=True,
- default=hex_uuid,
- editable=False,
- unique=True, )
- created = models.DateTimeField(
- verbose_name='created',
- auto_now_add=True, )
- modified = models.DateTimeField(
- verbose_name='updated',
- auto_now=True, )
- class UserManager(BaseUserManager):
- def create_user(self, email, password):
- if not email:
- raise ValueError('Users must have an email')
- if not password:
- raise ValueError('Users must have a password')
- user = self.model(email=self.normalize_email(email), )
- user.set_password(password)
- user.save(using=self._db)
- return user
- def create_staffuser(self, email, password):
- user = self.create_user(email=email, password=password, )
- user.staff = True
- user.save(using=self._db)
- return user
- def create_superuser(self, email, password):
- user = self.create_user(email=email, password=password, )
- user.staff = True
- user.admin = True
- user.save(using=self._db)
- return user
- class User(AbstractBaseUser, Model):
- objects = UserManager()
- email = models.EmailField(max_length=255, unique=True, )
- active = models.BooleanField(default=True, )
- staff = models.BooleanField(default=False, )
- admin = models.BooleanField(default=False, )
- USERNAME_FIELD = 'email'
- REQUIRED_FIELDS = []
- def __str__(self):
- return self.email
- def has_perm(self, perm, obj=None):
- print(self)
- print(perm)
- print(obj)
- return True
- def has_module_perms(self, app_label):
- print(self)
- print(app_label)
- return True
- @property
- def is_staff(self):
- return self.staff
- @property
- def is_admin(self):
- return self.admin
- @property
- def is_active(self):
- return self.active
Add Comment
Please, Sign In to add comment