mirror of
https://github.com/django/django.git
synced 2024-12-30 21:16:26 +00:00
cd260d03bd
Refs #15779. This will allow easier admin URL changes, when needed.
Thanks Simon Charette for the review.
Backport of 32e6a7d3a5
from master
64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
"""
|
|
A second, custom AdminSite -- see tests.CustomAdminSiteTests.
|
|
"""
|
|
from __future__ import unicode_literals
|
|
|
|
from django.conf.urls import url
|
|
from django.contrib import admin
|
|
from django.http import HttpResponse
|
|
from django.contrib.auth.models import User
|
|
from django.contrib.auth.admin import UserAdmin
|
|
|
|
from . import models, forms, admin as base_admin
|
|
|
|
|
|
class Admin2(admin.AdminSite):
|
|
app_index_template = 'custom_admin/app_index.html'
|
|
login_form = forms.CustomAdminAuthenticationForm
|
|
login_template = 'custom_admin/login.html'
|
|
logout_template = 'custom_admin/logout.html'
|
|
index_template = ['custom_admin/index.html'] # a list, to test fix for #18697
|
|
password_change_template = 'custom_admin/password_change_form.html'
|
|
password_change_done_template = 'custom_admin/password_change_done.html'
|
|
|
|
# A custom index view.
|
|
def index(self, request, extra_context=None):
|
|
return super(Admin2, self).index(request, {'foo': '*bar*'})
|
|
|
|
def get_urls(self):
|
|
return [
|
|
url(r'^my_view/$', self.admin_view(self.my_view), name='my_view'),
|
|
] + super(Admin2, self).get_urls()
|
|
|
|
def my_view(self, request):
|
|
return HttpResponse("Django is a magical pony!")
|
|
|
|
def password_change(self, request, extra_context=None):
|
|
return super(Admin2, self).password_change(request, {'spam': 'eggs'})
|
|
|
|
|
|
class UserLimitedAdmin(UserAdmin):
|
|
# used for testing password change on a user not in queryset
|
|
def get_queryset(self, request):
|
|
qs = super(UserLimitedAdmin, self).get_queryset(request)
|
|
return qs.filter(is_superuser=False)
|
|
|
|
|
|
class CustomPwdTemplateUserAdmin(UserAdmin):
|
|
change_user_password_template = ['admin/auth/user/change_password.html'] # a list, to test fix for #18697
|
|
|
|
|
|
site = Admin2(name="admin2")
|
|
|
|
site.register(models.Article, base_admin.ArticleAdmin)
|
|
site.register(models.Section, inlines=[base_admin.ArticleInline])
|
|
site.register(models.Thing, base_admin.ThingAdmin)
|
|
site.register(models.Fabric, base_admin.FabricAdmin)
|
|
site.register(models.ChapterXtra1, base_admin.ChapterXtra1Admin)
|
|
site.register(User, UserLimitedAdmin)
|
|
site.register(models.UndeletableObject, base_admin.UndeletableObjectAdmin)
|
|
site.register(models.Simple, base_admin.AttributeErrorRaisingAdmin)
|
|
|
|
simple_site = Admin2(name='admin4')
|
|
simple_site.register(User, CustomPwdTemplateUserAdmin)
|