mirror of
https://github.com/django/django.git
synced 2025-07-04 09:49:12 +00:00
newforms-admin: AdminSite index and display_login_form method can now take an optional extra_context argument, allowing you to inject extra template variables in to them from an over-ridden method on a subclass
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7631 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
725293d51a
commit
faae7c0faf
@ -249,7 +249,7 @@ class AdminSite(object):
|
||||
else:
|
||||
return self.display_login_form(request, ERROR_MESSAGE)
|
||||
|
||||
def index(self, request):
|
||||
def index(self, request, extra_context=None):
|
||||
"""
|
||||
Displays the main admin index page, which lists all of the installed
|
||||
apps that have been registered in this site.
|
||||
@ -292,12 +292,16 @@ class AdminSite(object):
|
||||
for app in app_list:
|
||||
app['models'].sort(lambda x, y: cmp(x['name'], y['name']))
|
||||
|
||||
return render_to_response(self.index_template or 'admin/index.html', {
|
||||
context = {
|
||||
'title': _('Site administration'),
|
||||
'app_list': app_list,
|
||||
}, context_instance=template.RequestContext(request))
|
||||
}
|
||||
context.update(extra_context or {})
|
||||
return render_to_response(self.index_template or 'admin/index.html', context,
|
||||
context_instance=template.RequestContext(request)
|
||||
)
|
||||
|
||||
def display_login_form(self, request, error_message=''):
|
||||
def display_login_form(self, request, error_message='', extra_context=None):
|
||||
request.session.set_test_cookie()
|
||||
if request.POST and request.POST.has_key('post_data'):
|
||||
# User has failed login BUT has previously saved post data.
|
||||
@ -307,12 +311,17 @@ class AdminSite(object):
|
||||
post_data = _encode_post_data(request.POST)
|
||||
else:
|
||||
post_data = _encode_post_data({})
|
||||
return render_to_response(self.login_template or 'admin/login.html', {
|
||||
|
||||
context = {
|
||||
'title': _('Log in'),
|
||||
'app_path': request.path,
|
||||
'post_data': post_data,
|
||||
'error_message': error_message
|
||||
}, context_instance=template.RequestContext(request))
|
||||
}
|
||||
context.update(extra_context or {})
|
||||
return render_to_response(self.login_template or 'admin/login.html', context,
|
||||
context_instance=template.RequestContext(request)
|
||||
)
|
||||
|
||||
|
||||
# This global object represents the default admin site, for the common case.
|
||||
|
@ -237,7 +237,18 @@ class AdminViewPermissionsTest(TestCase):
|
||||
self.assertTemplateUsed(request, 'custom_admin/index.html')
|
||||
self.assert_('Hello from a custom index template' in request.content)
|
||||
|
||||
# Finally, using monkey patching check we can inject custom_context arguments in to index
|
||||
original_index = admin.site.index
|
||||
def index(*args, **kwargs):
|
||||
kwargs['extra_context'] = {'foo': '*bar*'}
|
||||
return original_index(*args, **kwargs)
|
||||
admin.site.index = index
|
||||
request = self.client.get('/test_admin/admin/')
|
||||
self.assertTemplateUsed(request, 'custom_admin/index.html')
|
||||
self.assert_('Hello from a custom index template *bar*' in request.content)
|
||||
|
||||
self.client.get('/test_admin/admin/logout/')
|
||||
del admin.site.index # Resets to using the original
|
||||
admin.site.login_template = None
|
||||
admin.site.index_template = None
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{% extends "admin/index.html" %}
|
||||
|
||||
{% block content %}
|
||||
Hello from a custom index template
|
||||
Hello from a custom index template {{ foo }}
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
|
Loading…
x
Reference in New Issue
Block a user