64 lines
2.2 KiB
Python
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)
|