Last active
July 26, 2018 01:32
-
-
Save matheussl/5715623 to your computer and use it in GitHub Desktop.
Django 1.5: Add suport to create and edit custom users. SiteUser is identical to auth.User
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.contrib import admin | |
from forms import SiteUserCreationForm, SiteUserChangeForm | |
from django.contrib.auth.admin import UserAdmin | |
from models import SiteUser | |
class SiteUserAdmin(UserAdmin): | |
form = SiteUserChangeForm | |
add_form = SiteUserCreationForm | |
admin.site.register(SiteUser, SiteUserAdmin) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django import forms | |
from django.contrib.auth.forms import UserCreationForm, UserChangeForm | |
from models import SiteUser | |
class SiteUserCreationForm(UserCreationForm): | |
class Meta: | |
model = SiteUser | |
fields = ('username',) | |
def clean_username(self): | |
# Since User.username is unique, this check is redundant, | |
# but it sets a nicer error message than the ORM. See #13147. | |
username = self.cleaned_data["username"] | |
try: | |
SiteUser._default_manager.get(username=username) | |
except SiteUser.DoesNotExist: | |
return username | |
raise forms.ValidationError(self.error_messages['duplicate_username']) | |
class SiteUserChangeForm(UserChangeForm): | |
class Meta: | |
model = SiteUser |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.db import models | |
from django.contrib.auth.models import AbstractUser | |
class SiteUser(AbstractUser): | |
photo = models.ImageField(upload_to='users/photos', null=True, blank=True, verbose_name='foto') | |
cpf = models.CharField(max_length=11, null=True, blank=True, verbose_name='CPF') | |
phone = models.CharField(max_length=200, null=True, blank=True, verbose_name='telefone') | |
state = models.ForeignKey(State, null=True, blank=True, verbose_name='estado') | |
cep = models.CharField(max_length=9, null=True, blank=True, verbose_name='CEP') | |
is_student = models.BooleanField(default=False, verbose_name='é aluno?') | |
class Meta: | |
abstract = False | |
verbose_name = 'Usuário' | |
verbose_name_plural = 'Usuários' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment