django-orchestra-test/orchestra/apps/users/admin.py

64 lines
2.2 KiB
Python

from django.conf.urls import patterns, url
from django.core.urlresolvers import reverse
from django.contrib import admin
from django.contrib.admin.util import unquote
from django.contrib.auth import admin as auth
from django.utils.translation import ugettext, ugettext_lazy as _
from orchestra.admin import ExtendedModelAdmin
from orchestra.admin.utils import wrap_admin_view
from orchestra.apps.accounts.admin import AccountAdminMixin
from .forms import UserCreationForm, UserChangeForm
from .models import User
class UserAdmin(AccountAdminMixin, auth.UserAdmin, ExtendedModelAdmin):
list_display = ('username', 'account_link', 'is_main', 'is_superuser', 'is_active')
list_filter = ('is_main', 'is_superuser', 'is_active')
fieldsets = (
(None, {
'fields': ('username', 'password', 'account_link')
}),
(_("System"), {
'fields': ('home', 'shell', 'groups'),
}),
(_("Personal info"), {
'fields': ('first_name', 'last_name', 'email')
}),
(_("Permissions"), {
'fields': ('is_main', 'is_active', 'is_superuser')
}),
(_("Important dates"), {
'fields': ('last_login', 'date_joined')
}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'password1', 'password2', 'account'),
}),
)
search_fields = ['username']
readonly_fields = ('is_main', 'account_link',)
change_readonly_fields = ('username',)
filter_horizontal = ()
filter_by_account_fields = ('groups',)
add_form = UserCreationForm
form = UserChangeForm
ordering = ('-id',)
def get_form(self, request, obj=None, **kwargs):
""" exclude self reference on groups """
form = super(AccountAdminMixin, self).get_form(request, obj=obj, **kwargs)
if obj:
# Has to be done here and not in the form because of strange phenomenon
# derived from monkeypatching formfield.widget.render on AccountAdminMinxin,
# don't ask.
formfield = form.base_fields['groups']
formfield.queryset = formfield.queryset.exclude(id=obj.id)
return form
admin.site.register(User, UserAdmin)