From 91aeb00297f4897dac7d7464d9eff7a80876da13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Sat, 30 Mar 2013 13:30:57 +0100 Subject: [PATCH] Now working correctly the create and modify user on the admin --- greenmine/base/admin.py | 18 +++++++++++++++++- greenmine/base/forms.py | 22 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 greenmine/base/forms.py diff --git a/greenmine/base/admin.py b/greenmine/base/admin.py index 59a1ba76..8d8ef304 100644 --- a/greenmine/base/admin.py +++ b/greenmine/base/admin.py @@ -1,8 +1,11 @@ +from django.utils.translation import ugettext_lazy as _ + from django.contrib import admin from django.contrib.auth.models import Group -from django.contrib.auth.admin import UserAdmin +from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin from greenmine.base.models import Role, User +from greenmine.base.forms import UserChangeForm, UserCreationForm admin.site.unregister(Group) @@ -20,4 +23,17 @@ class RoleAdmin(admin.ModelAdmin): db_field, request=request, **kwargs) admin.site.register(Role, RoleAdmin) + +class UserAdmin(DjangoUserAdmin): + fieldsets = ( + (None, {'fields': ('username', 'password')}), + (_('Personal info'), {'fields': ('first_name', 'last_name', 'email', 'description', 'photo')}), + (_('Extra info'), {'fields': ('color', 'default_language', 'default_timezone', 'token', 'colorize_tags')}), + (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', + 'groups', 'user_permissions')}), + (_('Important dates'), {'fields': ('last_login', 'date_joined')}), + ) + form = UserChangeForm + add_form = UserCreationForm + admin.site.register(User, UserAdmin) diff --git a/greenmine/base/forms.py b/greenmine/base/forms.py new file mode 100644 index 00000000..5685cdbf --- /dev/null +++ b/greenmine/base/forms.py @@ -0,0 +1,22 @@ +from django.contrib.auth.forms import UserCreationForm as DjangoUserCreationForm, UserChangeForm as DjangoUserChangeForm +from greenmine.base.models import User + +class UserCreationForm(DjangoUserCreationForm): + 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: + User._default_manager.get(username=username) + except User.DoesNotExist: + return username + raise forms.ValidationError(self.error_messages['duplicate_username']) + + class Meta: + model = User + fields = ('username',) + +class UserChangeForm(DjangoUserChangeForm): + class Meta: + model = User +