fmartingr
/
shelfzilla
Archived
1
0
Fork 0

Added account user admin

This commit is contained in:
Felipe Martín 2014-11-04 23:36:19 +01:00
parent b2ae18630c
commit a5ae97fb46
3 changed files with 116 additions and 12 deletions

View File

@ -0,0 +1,103 @@
# -*- coding: utf-8 -*-
"""
License boilerplate should be used here.
"""
# python 3 imports
from __future__ import absolute_import, unicode_literals
# python imports
import logging
# django imports
from django import forms
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin
from django.contrib.auth.forms import ReadOnlyPasswordHashField
from django.contrib.auth.models import Permission
from django.utils.translation import ugettext_lazy as _
# app imports
from . import models
logger = logging.getLogger(__name__)
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 = models.User
fields = ('email', 'birthdate')
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 = models.User
fields = ('email', 'password', 'birthdate', 'is_active', 'is_staff')
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(DjangoUserAdmin):
# The forms to add and change user instances
form = UserChangeForm
add_form = UserCreationForm
# The fields to be used in displaying the User model.
# These override the definitions on the base UserAdmin
# that reference specific fields on auth.User.
list_display = (
'email', 'username', 'first_name', 'last_name', 'is_active')
list_filter = ('is_staff',)
fieldsets = (
(None, {'fields': ('username', 'email', 'password')}),
(_('Personal info'), {'fields': (
'first_name', 'last_name', 'birthdate', 'gender', )}),
(_('Permissions'), {'fields': ('is_staff',)}),
)
# add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
# overrides get_fieldsets to use this attribute when creating a user.
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'birthdate', 'password1', 'password2')
}),
)
search_fields = ('email',)
ordering = ('email',)
filter_horizontal = ()
# Now register the new UserAdmin...
admin.site.register(models.User, UserAdmin)
admin.site.register(Permission)

View File

@ -32,14 +32,16 @@ ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = (
# Auth
'shelfzilla.apps.account',
'django.contrib.auth',
# Admin
'suit',
'django.contrib.admin',
'solo',
# Django
'shelfzilla.apps.account',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
@ -98,7 +100,7 @@ MIDDLEWARE_CLASSES = (
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'shelfzilla.middleware.BetaMiddleware',
# 'shelfzilla.middleware.BetaMiddleware',
)
TEMPLATE_DIRS = (
@ -172,12 +174,12 @@ COMPRESS_PRECOMPILERS = (
MAX_USERNAME_LENGTH = 75
# Beta settings
BETA_ACCESS_GROUP_ID = 1
BETA_ACCESS_ALLOW_URLS = (
'/landing/',
'/login/',
'/messages/',
)
# BETA_ACCESS_GROUP_ID = 1
# BETA_ACCESS_ALLOW_URLS = (
# '/landing/',
# '/login/',
# '/messages/',
# )
# filer
THUMBNAIL_PROCESSORS = (
@ -251,10 +253,9 @@ SUIT_CONFIG = {
'SEARCH_URL': '',
'MENU': (
{
'app': 'auth',
'label': 'Authorization',
'icon': 'icon-lock',
'models': ('user', 'group')
'models': ('account.user', 'auth.group')
},
{
'app': 'config',

View File

@ -6,7 +6,7 @@ from .base import *
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ALLOWED_HOSTS = ('127.0.0.1', 'localhost' )
ALLOWED_HOSTS = ('127.0.0.1', 'localhost')
INTERNAL_IPS = ('127.0.0.1', )
DATABASES = {