2 A second, custom AdminSite -- see tests.CustomAdminSiteTests.
4 from __future__
import absolute_import
6 from django
.conf
.urls
import patterns
7 from django
.contrib
import admin
8 from django
.http
import HttpResponse
9 from django
.contrib
.auth
.models
import User
10 from django
.contrib
.auth
.admin
import UserAdmin
12 from . import models
, forms
, admin
as base_admin
15 class Admin2(admin
.AdminSite
):
16 login_form
= forms
.CustomAdminAuthenticationForm
17 login_template
= 'custom_admin/login.html'
18 logout_template
= 'custom_admin/logout.html'
19 index_template
= 'custom_admin/index.html'
20 password_change_template
= 'custom_admin/password_change_form.html'
21 password_change_done_template
= 'custom_admin/password_change_done.html'
23 # A custom index view.
24 def index(self
, request
, extra_context
=None):
25 return super(Admin2
, self
).index(request
, {'foo': '*bar*'})
29 (r
'^my_view/$', self
.admin_view(self
.my_view
)),
30 ) + super(Admin2
, self
).get_urls()
32 def my_view(self
, request
):
33 return HttpResponse("Django is a magical pony!")
36 class UserLimitedAdmin(UserAdmin
):
37 # used for testing password change on a user not in queryset
38 def queryset(self
, request
):
39 qs
= super(UserLimitedAdmin
, self
).queryset(request
)
40 return qs
.filter(is_superuser
=False)
43 site
= Admin2(name
="admin2")
45 site
.register(models
.Article
, base_admin
.ArticleAdmin
)
46 site
.register(models
.Section
, inlines
=[base_admin
.ArticleInline
])
47 site
.register(models
.Thing
, base_admin
.ThingAdmin
)
48 site
.register(models
.Fabric
, base_admin
.FabricAdmin
)
49 site
.register(models
.ChapterXtra1
, base_admin
.ChapterXtra1Admin
)
50 site
.register(User
, UserLimitedAdmin
)