summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2005-10-19 01:09:05 +0000
committerAdrian Holovaty <adrian@holovaty.com>2005-10-19 01:09:05 +0000
commitf07e5d4f5df5ca9ca3366d7ecc4b01c490c13198 (patch)
tree1b73d89471554d058cb46bc13d17bd3687c638fa /django
parentfd3d579179581b1fa460e13115471d58fec0c8f6 (diff)
Fixed #627 -- BACKWARDS-INCOMPATIBLE CHANGE. Admin is now an app, not a middleware. See BackwardsIncompatibleChanges for a full list of changes and information on how to update your code.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@948 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/conf/project_template/settings.py (renamed from django/conf/project_template/settings/main.py)10
-rw-r--r--django/conf/project_template/settings/__init__.py0
-rw-r--r--django/conf/project_template/settings/admin.py18
-rw-r--r--django/conf/project_template/settings/urls/__init__.py0
-rw-r--r--django/conf/project_template/settings/urls/admin.py6
-rw-r--r--django/conf/project_template/urls.py (renamed from django/conf/project_template/settings/urls/main.py)3
-rw-r--r--django/contrib/admin/media/css/base.css (renamed from django/conf/admin_media/css/base.css)0
-rw-r--r--django/contrib/admin/media/css/changelists.css (renamed from django/conf/admin_media/css/changelists.css)0
-rw-r--r--django/contrib/admin/media/css/global.css (renamed from django/conf/admin_media/css/global.css)0
-rw-r--r--django/contrib/admin/media/img/admin/arrow-down.gif (renamed from django/conf/admin_media/img/admin/arrow-down.gif)bin80 -> 80 bytes
-rw-r--r--django/contrib/admin/media/img/admin/arrow-up.gif (renamed from django/conf/admin_media/img/admin/arrow-up.gif)bin838 -> 838 bytes
-rw-r--r--django/contrib/admin/media/img/admin/changelist-bg.gif (renamed from django/conf/admin_media/img/admin/changelist-bg.gif)bin58 -> 58 bytes
-rw-r--r--django/contrib/admin/media/img/admin/chooser-bg.gif (renamed from django/conf/admin_media/img/admin/chooser-bg.gif)bin199 -> 199 bytes
-rw-r--r--django/contrib/admin/media/img/admin/chooser_stacked-bg.gif (renamed from django/conf/admin_media/img/admin/chooser_stacked-bg.gif)bin212 -> 212 bytes
-rw-r--r--django/contrib/admin/media/img/admin/default-bg-reverse.gif (renamed from django/conf/admin_media/img/admin/default-bg-reverse.gif)bin843 -> 843 bytes
-rw-r--r--django/contrib/admin/media/img/admin/default-bg.gif (renamed from django/conf/admin_media/img/admin/default-bg.gif)bin844 -> 844 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon-no.gif (renamed from django/conf/admin_media/img/admin/icon-no.gif)bin176 -> 176 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon-yes.gif (renamed from django/conf/admin_media/img/admin/icon-yes.gif)bin299 -> 299 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon_addlink.gif (renamed from django/conf/admin_media/img/admin/icon_addlink.gif)bin119 -> 119 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon_alert.gif (renamed from django/conf/admin_media/img/admin/icon_alert.gif)bin145 -> 145 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon_calendar.gif (renamed from django/conf/admin_media/img/admin/icon_calendar.gif)bin192 -> 192 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon_changelink.gif (renamed from django/conf/admin_media/img/admin/icon_changelink.gif)bin119 -> 119 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon_clock.gif (renamed from django/conf/admin_media/img/admin/icon_clock.gif)bin390 -> 390 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon_deletelink.gif (renamed from django/conf/admin_media/img/admin/icon_deletelink.gif)bin181 -> 181 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon_error.gif (renamed from django/conf/admin_media/img/admin/icon_error.gif)bin319 -> 319 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon_searchbox.png (renamed from django/conf/admin_media/img/admin/icon_searchbox.png)bin667 -> 667 bytes
-rw-r--r--django/contrib/admin/media/img/admin/icon_success.gif (renamed from django/conf/admin_media/img/admin/icon_success.gif)bin341 -> 341 bytes
-rw-r--r--django/contrib/admin/media/img/admin/nav-bg-grabber.gif (renamed from django/conf/admin_media/img/admin/nav-bg-grabber.gif)bin116 -> 116 bytes
-rw-r--r--django/contrib/admin/media/img/admin/nav-bg-reverse.gif (renamed from django/conf/admin_media/img/admin/nav-bg-reverse.gif)bin186 -> 186 bytes
-rw-r--r--django/contrib/admin/media/img/admin/nav-bg.gif (renamed from django/conf/admin_media/img/admin/nav-bg.gif)bin273 -> 273 bytes
-rw-r--r--django/contrib/admin/media/img/admin/selector-add.gif (renamed from django/conf/admin_media/img/admin/selector-add.gif)bin606 -> 606 bytes
-rw-r--r--django/contrib/admin/media/img/admin/selector-addall.gif (renamed from django/conf/admin_media/img/admin/selector-addall.gif)bin358 -> 358 bytes
-rw-r--r--django/contrib/admin/media/img/admin/selector-remove.gif (renamed from django/conf/admin_media/img/admin/selector-remove.gif)bin398 -> 398 bytes
-rw-r--r--django/contrib/admin/media/img/admin/selector-removeall.gif (renamed from django/conf/admin_media/img/admin/selector-removeall.gif)bin355 -> 355 bytes
-rw-r--r--django/contrib/admin/media/img/admin/selector-search.gif (renamed from django/conf/admin_media/img/admin/selector-search.gif)bin552 -> 552 bytes
-rw-r--r--django/contrib/admin/media/img/admin/selector_stacked-add.gif (renamed from django/conf/admin_media/img/admin/selector_stacked-add.gif)bin612 -> 612 bytes
-rw-r--r--django/contrib/admin/media/img/admin/selector_stacked-remove.gif (renamed from django/conf/admin_media/img/admin/selector_stacked-remove.gif)bin401 -> 401 bytes
-rw-r--r--django/contrib/admin/media/img/admin/tool-left.gif (renamed from django/conf/admin_media/img/admin/tool-left.gif)bin197 -> 197 bytes
-rw-r--r--django/contrib/admin/media/img/admin/tool-left_over.gif (renamed from django/conf/admin_media/img/admin/tool-left_over.gif)bin203 -> 203 bytes
-rw-r--r--django/contrib/admin/media/img/admin/tool-right.gif (renamed from django/conf/admin_media/img/admin/tool-right.gif)bin198 -> 198 bytes
-rw-r--r--django/contrib/admin/media/img/admin/tool-right_over.gif (renamed from django/conf/admin_media/img/admin/tool-right_over.gif)bin200 -> 200 bytes
-rw-r--r--django/contrib/admin/media/img/admin/tooltag-add.gif (renamed from django/conf/admin_media/img/admin/tooltag-add.gif)bin932 -> 932 bytes
-rw-r--r--django/contrib/admin/media/img/admin/tooltag-add_over.gif (renamed from django/conf/admin_media/img/admin/tooltag-add_over.gif)bin336 -> 336 bytes
-rw-r--r--django/contrib/admin/media/img/admin/tooltag-arrowright.gif (renamed from django/conf/admin_media/img/admin/tooltag-arrowright.gif)bin351 -> 351 bytes
-rw-r--r--django/contrib/admin/media/img/admin/tooltag-arrowright_over.gif (renamed from django/conf/admin_media/img/admin/tooltag-arrowright_over.gif)bin354 -> 354 bytes
-rw-r--r--django/contrib/admin/media/js/SelectBox.js (renamed from django/conf/admin_media/js/SelectBox.js)0
-rw-r--r--django/contrib/admin/media/js/SelectFilter.js (renamed from django/conf/admin_media/js/SelectFilter.js)0
-rw-r--r--django/contrib/admin/media/js/SelectFilter2.js (renamed from django/conf/admin_media/js/SelectFilter2.js)0
-rw-r--r--django/contrib/admin/media/js/admin/CollapsedFieldsets.js (renamed from django/conf/admin_media/js/admin/CollapsedFieldsets.js)0
-rw-r--r--django/contrib/admin/media/js/admin/DateTimeShortcuts.js (renamed from django/conf/admin_media/js/admin/DateTimeShortcuts.js)0
-rw-r--r--django/contrib/admin/media/js/admin/RelatedObjectLookups.js (renamed from django/conf/admin_media/js/admin/RelatedObjectLookups.js)0
-rw-r--r--django/contrib/admin/media/js/admin/ordering.js (renamed from django/conf/admin_media/js/admin/ordering.js)0
-rw-r--r--django/contrib/admin/media/js/calendar.js (renamed from django/conf/admin_media/js/calendar.js)0
-rw-r--r--django/contrib/admin/media/js/core.js (renamed from django/conf/admin_media/js/core.js)0
-rw-r--r--django/contrib/admin/media/js/dateparse.js (renamed from django/conf/admin_media/js/dateparse.js)0
-rw-r--r--django/contrib/admin/media/js/getElementsBySelector.js (renamed from django/conf/admin_media/js/getElementsBySelector.js)0
-rw-r--r--django/contrib/admin/media/js/timeparse.js (renamed from django/conf/admin_media/js/timeparse.js)0
-rw-r--r--django/contrib/admin/media/js/urlify.js (renamed from django/conf/admin_media/js/urlify.js)0
-rw-r--r--django/contrib/admin/templates/admin/404.html (renamed from django/conf/admin_templates/404.html)2
-rw-r--r--django/contrib/admin/templates/admin/500.html (renamed from django/conf/admin_templates/500.html)2
-rw-r--r--django/contrib/admin/templates/admin/base.html (renamed from django/conf/admin_templates/base.html)0
-rw-r--r--django/contrib/admin/templates/admin/base_site.html (renamed from django/conf/admin_templates/base_site.html)2
-rw-r--r--django/contrib/admin/templates/admin/delete_confirmation.html (renamed from django/conf/admin_templates/delete_confirmation_generic.html)2
-rw-r--r--django/contrib/admin/templates/admin/index.html (renamed from django/conf/admin_templates/index.html)2
-rw-r--r--django/contrib/admin/templates/admin/login.html (renamed from django/conf/admin_templates/login.html)2
-rw-r--r--django/contrib/admin/templates/admin/object_history.html (renamed from django/conf/admin_templates/admin_object_history.html)2
-rw-r--r--django/contrib/admin/templates/admin/template_validator.html (renamed from django/conf/admin_templates/template_validator.html)2
-rw-r--r--django/contrib/admin/templates/admin_doc/bookmarklets.html (renamed from django/conf/admin_templates/doc/bookmarklets.html)2
-rw-r--r--django/contrib/admin/templates/admin_doc/index.html (renamed from django/conf/admin_templates/doc/index.html)2
-rw-r--r--django/contrib/admin/templates/admin_doc/missing_docutils.html (renamed from django/conf/admin_templates/doc/missing_docutils.html)2
-rw-r--r--django/contrib/admin/templates/admin_doc/model_detail.html (renamed from django/conf/admin_templates/doc/model_detail.html)2
-rw-r--r--django/contrib/admin/templates/admin_doc/model_index.html (renamed from django/conf/admin_templates/doc/model_index.html)2
-rw-r--r--django/contrib/admin/templates/admin_doc/template_detail.html (renamed from django/conf/admin_templates/doc/template_detail.html)2
-rw-r--r--django/contrib/admin/templates/admin_doc/template_filter_index.html (renamed from django/conf/admin_templates/doc/template_filter_index.html)2
-rw-r--r--django/contrib/admin/templates/admin_doc/template_tag_index.html (renamed from django/conf/admin_templates/doc/template_tag_index.html)2
-rw-r--r--django/contrib/admin/templates/admin_doc/view_detail.html (renamed from django/conf/admin_templates/doc/view_detail.html)2
-rw-r--r--django/contrib/admin/templates/admin_doc/view_index.html (renamed from django/conf/admin_templates/doc/view_index.html)2
-rw-r--r--django/contrib/admin/templates/registration/logged_out.html (renamed from django/conf/admin_templates/registration/logged_out.html)2
-rw-r--r--django/contrib/admin/templates/registration/password_change_done.html (renamed from django/conf/admin_templates/registration/password_change_done.html)2
-rw-r--r--django/contrib/admin/templates/registration/password_change_form.html (renamed from django/conf/admin_templates/registration/password_change_form.html)2
-rw-r--r--django/contrib/admin/templates/registration/password_reset_done.html (renamed from django/conf/admin_templates/registration/password_reset_done.html)2
-rw-r--r--django/contrib/admin/templates/registration/password_reset_email.html (renamed from django/conf/admin_templates/registration/password_reset_email.html)0
-rw-r--r--django/contrib/admin/templates/registration/password_reset_form.html (renamed from django/conf/admin_templates/registration/password_reset_form.html)2
-rw-r--r--django/contrib/admin/templatetags/adminapplist.py (renamed from django/templatetags/adminapplist.py)0
-rw-r--r--django/contrib/admin/templatetags/adminmedia.py (renamed from django/templatetags/adminmedia.py)0
-rw-r--r--django/contrib/admin/templatetags/log.py (renamed from django/templatetags/log.py)2
-rw-r--r--django/contrib/admin/urls/admin.py (renamed from django/conf/urls/admin.py)0
-rw-r--r--django/contrib/admin/views/main.py12
-rw-r--r--django/contrib/admin/views/template.py2
-rw-r--r--django/core/management.py13
-rw-r--r--django/core/servers/basehttp.py2
-rw-r--r--django/middleware/admin.py126
-rw-r--r--django/models/auth.py46
93 files changed, 45 insertions, 241 deletions
diff --git a/django/conf/project_template/settings/main.py b/django/conf/project_template/settings.py
index 1bde7df10a..838375cbb7 100644
--- a/django/conf/project_template/settings/main.py
+++ b/django/conf/project_template/settings.py
@@ -27,22 +27,28 @@ MEDIA_ROOT = ''
# Example: "http://media.lawrence.com"
MEDIA_URL = ''
+# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
+# trailing slash.
+# Examples: "http://foo.com/media/", "/media/".
+ADMIN_MEDIA_PREFIX = '/media/'
+
# Make this unique, and don't share it with anybody.
SECRET_KEY = ''
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
-# 'django.core.template.loaders.app_directories.load_template_source',
'django.core.template.loaders.filesystem.load_template_source',
+ 'django.core.template.loaders.app_directories.load_template_source',
# 'django.core.template.loaders.eggs.load_template_source',
)
MIDDLEWARE_CLASSES = (
"django.middleware.common.CommonMiddleware",
+ "django.middleware.sessions.SessionMiddleware",
"django.middleware.doc.XViewMiddleware",
)
-ROOT_URLCONF = '{{ project_name }}.settings.urls.main'
+ROOT_URLCONF = '{{ project_name }}.urls'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates".
diff --git a/django/conf/project_template/settings/__init__.py b/django/conf/project_template/settings/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
--- a/django/conf/project_template/settings/__init__.py
+++ /dev/null
diff --git a/django/conf/project_template/settings/admin.py b/django/conf/project_template/settings/admin.py
deleted file mode 100644
index 603886a5f2..0000000000
--- a/django/conf/project_template/settings/admin.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Django settings for {{ project_name }} project admin site.
-
-from main import *
-
-TEMPLATE_DIRS = (
- # Put strings here, like "/home/html/django_templates".
-)
-ROOT_URLCONF = '{{ project_name }}.settings.urls.admin'
-MIDDLEWARE_CLASSES = (
- 'django.middleware.sessions.SessionMiddleware',
- 'django.middleware.admin.AdminUserRequired',
- 'django.middleware.common.CommonMiddleware',
-)
-
-# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
-# trailing slash.
-# Examples: "http://foo.com/media/", "/media/".
-ADMIN_MEDIA_PREFIX = '/media/'
diff --git a/django/conf/project_template/settings/urls/__init__.py b/django/conf/project_template/settings/urls/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
--- a/django/conf/project_template/settings/urls/__init__.py
+++ /dev/null
diff --git a/django/conf/project_template/settings/urls/admin.py b/django/conf/project_template/settings/urls/admin.py
deleted file mode 100644
index c3eb86d3cb..0000000000
--- a/django/conf/project_template/settings/urls/admin.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns('',
- (r'^admin/', include('django.conf.urls.admin')),
- (r'^r/', include('django.conf.urls.shortcut')),
-)
diff --git a/django/conf/project_template/settings/urls/main.py b/django/conf/project_template/urls.py
index f9b993a52c..fe77ea1867 100644
--- a/django/conf/project_template/settings/urls/main.py
+++ b/django/conf/project_template/urls.py
@@ -3,4 +3,7 @@ from django.conf.urls.defaults import *
urlpatterns = patterns('',
# Example:
# (r'^{{ project_name }}/', include('{{ project_name }}.apps.foo.urls.foo')),
+
+ # Uncomment this for admin:
+# (r'^admin/', include('django.contrib.admin.urls.admin')),
)
diff --git a/django/conf/admin_media/css/base.css b/django/contrib/admin/media/css/base.css
index d50e5d43f5..d50e5d43f5 100644
--- a/django/conf/admin_media/css/base.css
+++ b/django/contrib/admin/media/css/base.css
diff --git a/django/conf/admin_media/css/changelists.css b/django/contrib/admin/media/css/changelists.css
index 7ff59c5e6b..7ff59c5e6b 100644
--- a/django/conf/admin_media/css/changelists.css
+++ b/django/contrib/admin/media/css/changelists.css
diff --git a/django/conf/admin_media/css/global.css b/django/contrib/admin/media/css/global.css
index 453998c363..453998c363 100644
--- a/django/conf/admin_media/css/global.css
+++ b/django/contrib/admin/media/css/global.css
diff --git a/django/conf/admin_media/img/admin/arrow-down.gif b/django/contrib/admin/media/img/admin/arrow-down.gif
index a967b9fd55..a967b9fd55 100644
--- a/django/conf/admin_media/img/admin/arrow-down.gif
+++ b/django/contrib/admin/media/img/admin/arrow-down.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/arrow-up.gif b/django/contrib/admin/media/img/admin/arrow-up.gif
index 3fe4851399..3fe4851399 100644
--- a/django/conf/admin_media/img/admin/arrow-up.gif
+++ b/django/contrib/admin/media/img/admin/arrow-up.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/changelist-bg.gif b/django/contrib/admin/media/img/admin/changelist-bg.gif
index 7f4699470a..7f4699470a 100644
--- a/django/conf/admin_media/img/admin/changelist-bg.gif
+++ b/django/contrib/admin/media/img/admin/changelist-bg.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/chooser-bg.gif b/django/contrib/admin/media/img/admin/chooser-bg.gif
index 30e83c2518..30e83c2518 100644
--- a/django/conf/admin_media/img/admin/chooser-bg.gif
+++ b/django/contrib/admin/media/img/admin/chooser-bg.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/chooser_stacked-bg.gif b/django/contrib/admin/media/img/admin/chooser_stacked-bg.gif
index 5d104b6d98..5d104b6d98 100644
--- a/django/conf/admin_media/img/admin/chooser_stacked-bg.gif
+++ b/django/contrib/admin/media/img/admin/chooser_stacked-bg.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/default-bg-reverse.gif b/django/contrib/admin/media/img/admin/default-bg-reverse.gif
index 0873281e51..0873281e51 100644
--- a/django/conf/admin_media/img/admin/default-bg-reverse.gif
+++ b/django/contrib/admin/media/img/admin/default-bg-reverse.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/default-bg.gif b/django/contrib/admin/media/img/admin/default-bg.gif
index 003aeca59f..003aeca59f 100644
--- a/django/conf/admin_media/img/admin/default-bg.gif
+++ b/django/contrib/admin/media/img/admin/default-bg.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon-no.gif b/django/contrib/admin/media/img/admin/icon-no.gif
index 1b4ee58145..1b4ee58145 100644
--- a/django/conf/admin_media/img/admin/icon-no.gif
+++ b/django/contrib/admin/media/img/admin/icon-no.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon-yes.gif b/django/contrib/admin/media/img/admin/icon-yes.gif
index 7399282740..7399282740 100644
--- a/django/conf/admin_media/img/admin/icon-yes.gif
+++ b/django/contrib/admin/media/img/admin/icon-yes.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon_addlink.gif b/django/contrib/admin/media/img/admin/icon_addlink.gif
index ee70e1adba..ee70e1adba 100644
--- a/django/conf/admin_media/img/admin/icon_addlink.gif
+++ b/django/contrib/admin/media/img/admin/icon_addlink.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon_alert.gif b/django/contrib/admin/media/img/admin/icon_alert.gif
index a1dde26254..a1dde26254 100644
--- a/django/conf/admin_media/img/admin/icon_alert.gif
+++ b/django/contrib/admin/media/img/admin/icon_alert.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon_calendar.gif b/django/contrib/admin/media/img/admin/icon_calendar.gif
index 7587b305a4..7587b305a4 100644
--- a/django/conf/admin_media/img/admin/icon_calendar.gif
+++ b/django/contrib/admin/media/img/admin/icon_calendar.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon_changelink.gif b/django/contrib/admin/media/img/admin/icon_changelink.gif
index e1b9afde65..e1b9afde65 100644
--- a/django/conf/admin_media/img/admin/icon_changelink.gif
+++ b/django/contrib/admin/media/img/admin/icon_changelink.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon_clock.gif b/django/contrib/admin/media/img/admin/icon_clock.gif
index ff2d57e0a3..ff2d57e0a3 100644
--- a/django/conf/admin_media/img/admin/icon_clock.gif
+++ b/django/contrib/admin/media/img/admin/icon_clock.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon_deletelink.gif b/django/contrib/admin/media/img/admin/icon_deletelink.gif
index 72523e3a3b..72523e3a3b 100644
--- a/django/conf/admin_media/img/admin/icon_deletelink.gif
+++ b/django/contrib/admin/media/img/admin/icon_deletelink.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon_error.gif b/django/contrib/admin/media/img/admin/icon_error.gif
index 3730a00b26..3730a00b26 100644
--- a/django/conf/admin_media/img/admin/icon_error.gif
+++ b/django/contrib/admin/media/img/admin/icon_error.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon_searchbox.png b/django/contrib/admin/media/img/admin/icon_searchbox.png
index 8ab579e526..8ab579e526 100644
--- a/django/conf/admin_media/img/admin/icon_searchbox.png
+++ b/django/contrib/admin/media/img/admin/icon_searchbox.png
Binary files differ
diff --git a/django/conf/admin_media/img/admin/icon_success.gif b/django/contrib/admin/media/img/admin/icon_success.gif
index 5cf90a15aa..5cf90a15aa 100644
--- a/django/conf/admin_media/img/admin/icon_success.gif
+++ b/django/contrib/admin/media/img/admin/icon_success.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/nav-bg-grabber.gif b/django/contrib/admin/media/img/admin/nav-bg-grabber.gif
index 0a784fa769..0a784fa769 100644
--- a/django/conf/admin_media/img/admin/nav-bg-grabber.gif
+++ b/django/contrib/admin/media/img/admin/nav-bg-grabber.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/nav-bg-reverse.gif b/django/contrib/admin/media/img/admin/nav-bg-reverse.gif
index f11029f90f..f11029f90f 100644
--- a/django/conf/admin_media/img/admin/nav-bg-reverse.gif
+++ b/django/contrib/admin/media/img/admin/nav-bg-reverse.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/nav-bg.gif b/django/contrib/admin/media/img/admin/nav-bg.gif
index f8402b809d..f8402b809d 100644
--- a/django/conf/admin_media/img/admin/nav-bg.gif
+++ b/django/contrib/admin/media/img/admin/nav-bg.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/selector-add.gif b/django/contrib/admin/media/img/admin/selector-add.gif
index 50132d1c43..50132d1c43 100644
--- a/django/conf/admin_media/img/admin/selector-add.gif
+++ b/django/contrib/admin/media/img/admin/selector-add.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/selector-addall.gif b/django/contrib/admin/media/img/admin/selector-addall.gif
index d6e7c639bb..d6e7c639bb 100644
--- a/django/conf/admin_media/img/admin/selector-addall.gif
+++ b/django/contrib/admin/media/img/admin/selector-addall.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/selector-remove.gif b/django/contrib/admin/media/img/admin/selector-remove.gif
index 2b9b0a2ac3..2b9b0a2ac3 100644
--- a/django/conf/admin_media/img/admin/selector-remove.gif
+++ b/django/contrib/admin/media/img/admin/selector-remove.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/selector-removeall.gif b/django/contrib/admin/media/img/admin/selector-removeall.gif
index 5a4421926d..5a4421926d 100644
--- a/django/conf/admin_media/img/admin/selector-removeall.gif
+++ b/django/contrib/admin/media/img/admin/selector-removeall.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/selector-search.gif b/django/contrib/admin/media/img/admin/selector-search.gif
index 6d5f4c7492..6d5f4c7492 100644
--- a/django/conf/admin_media/img/admin/selector-search.gif
+++ b/django/contrib/admin/media/img/admin/selector-search.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/selector_stacked-add.gif b/django/contrib/admin/media/img/admin/selector_stacked-add.gif
index 7426169652..7426169652 100644
--- a/django/conf/admin_media/img/admin/selector_stacked-add.gif
+++ b/django/contrib/admin/media/img/admin/selector_stacked-add.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/selector_stacked-remove.gif b/django/contrib/admin/media/img/admin/selector_stacked-remove.gif
index 60412cee19..60412cee19 100644
--- a/django/conf/admin_media/img/admin/selector_stacked-remove.gif
+++ b/django/contrib/admin/media/img/admin/selector_stacked-remove.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/tool-left.gif b/django/contrib/admin/media/img/admin/tool-left.gif
index 011490ff3a..011490ff3a 100644
--- a/django/conf/admin_media/img/admin/tool-left.gif
+++ b/django/contrib/admin/media/img/admin/tool-left.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/tool-left_over.gif b/django/contrib/admin/media/img/admin/tool-left_over.gif
index 937e07bb1a..937e07bb1a 100644
--- a/django/conf/admin_media/img/admin/tool-left_over.gif
+++ b/django/contrib/admin/media/img/admin/tool-left_over.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/tool-right.gif b/django/contrib/admin/media/img/admin/tool-right.gif
index cdc140cc59..cdc140cc59 100644
--- a/django/conf/admin_media/img/admin/tool-right.gif
+++ b/django/contrib/admin/media/img/admin/tool-right.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/tool-right_over.gif b/django/contrib/admin/media/img/admin/tool-right_over.gif
index 4db977e838..4db977e838 100644
--- a/django/conf/admin_media/img/admin/tool-right_over.gif
+++ b/django/contrib/admin/media/img/admin/tool-right_over.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/tooltag-add.gif b/django/contrib/admin/media/img/admin/tooltag-add.gif
index 8b53d49ae5..8b53d49ae5 100644
--- a/django/conf/admin_media/img/admin/tooltag-add.gif
+++ b/django/contrib/admin/media/img/admin/tooltag-add.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/tooltag-add_over.gif b/django/contrib/admin/media/img/admin/tooltag-add_over.gif
index bfc52f10de..bfc52f10de 100644
--- a/django/conf/admin_media/img/admin/tooltag-add_over.gif
+++ b/django/contrib/admin/media/img/admin/tooltag-add_over.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/tooltag-arrowright.gif b/django/contrib/admin/media/img/admin/tooltag-arrowright.gif
index cdaaae77ed..cdaaae77ed 100644
--- a/django/conf/admin_media/img/admin/tooltag-arrowright.gif
+++ b/django/contrib/admin/media/img/admin/tooltag-arrowright.gif
Binary files differ
diff --git a/django/conf/admin_media/img/admin/tooltag-arrowright_over.gif b/django/contrib/admin/media/img/admin/tooltag-arrowright_over.gif
index 7163189604..7163189604 100644
--- a/django/conf/admin_media/img/admin/tooltag-arrowright_over.gif
+++ b/django/contrib/admin/media/img/admin/tooltag-arrowright_over.gif
Binary files differ
diff --git a/django/conf/admin_media/js/SelectBox.js b/django/contrib/admin/media/js/SelectBox.js
index af8de204cb..af8de204cb 100644
--- a/django/conf/admin_media/js/SelectBox.js
+++ b/django/contrib/admin/media/js/SelectBox.js
diff --git a/django/conf/admin_media/js/SelectFilter.js b/django/contrib/admin/media/js/SelectFilter.js
index 0501920608..0501920608 100644
--- a/django/conf/admin_media/js/SelectFilter.js
+++ b/django/contrib/admin/media/js/SelectFilter.js
diff --git a/django/conf/admin_media/js/SelectFilter2.js b/django/contrib/admin/media/js/SelectFilter2.js
index 380ae72c91..380ae72c91 100644
--- a/django/conf/admin_media/js/SelectFilter2.js
+++ b/django/contrib/admin/media/js/SelectFilter2.js
diff --git a/django/conf/admin_media/js/admin/CollapsedFieldsets.js b/django/contrib/admin/media/js/admin/CollapsedFieldsets.js
index 0b3ad9e421..0b3ad9e421 100644
--- a/django/conf/admin_media/js/admin/CollapsedFieldsets.js
+++ b/django/contrib/admin/media/js/admin/CollapsedFieldsets.js
diff --git a/django/conf/admin_media/js/admin/DateTimeShortcuts.js b/django/contrib/admin/media/js/admin/DateTimeShortcuts.js
index 5da6f2f48e..5da6f2f48e 100644
--- a/django/conf/admin_media/js/admin/DateTimeShortcuts.js
+++ b/django/contrib/admin/media/js/admin/DateTimeShortcuts.js
diff --git a/django/conf/admin_media/js/admin/RelatedObjectLookups.js b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
index 3788e048b2..3788e048b2 100644
--- a/django/conf/admin_media/js/admin/RelatedObjectLookups.js
+++ b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
diff --git a/django/conf/admin_media/js/admin/ordering.js b/django/contrib/admin/media/js/admin/ordering.js
index fb0f5b007e..fb0f5b007e 100644
--- a/django/conf/admin_media/js/admin/ordering.js
+++ b/django/contrib/admin/media/js/admin/ordering.js
diff --git a/django/conf/admin_media/js/calendar.js b/django/contrib/admin/media/js/calendar.js
index ad1f0a9734..ad1f0a9734 100644
--- a/django/conf/admin_media/js/calendar.js
+++ b/django/contrib/admin/media/js/calendar.js
diff --git a/django/conf/admin_media/js/core.js b/django/contrib/admin/media/js/core.js
index 62d74211de..62d74211de 100644
--- a/django/conf/admin_media/js/core.js
+++ b/django/contrib/admin/media/js/core.js
diff --git a/django/conf/admin_media/js/dateparse.js b/django/contrib/admin/media/js/dateparse.js
index cec36e41e0..cec36e41e0 100644
--- a/django/conf/admin_media/js/dateparse.js
+++ b/django/contrib/admin/media/js/dateparse.js
diff --git a/django/conf/admin_media/js/getElementsBySelector.js b/django/contrib/admin/media/js/getElementsBySelector.js
index ae6d387a91..ae6d387a91 100644
--- a/django/conf/admin_media/js/getElementsBySelector.js
+++ b/django/contrib/admin/media/js/getElementsBySelector.js
diff --git a/django/conf/admin_media/js/timeparse.js b/django/contrib/admin/media/js/timeparse.js
index 882f41d56e..882f41d56e 100644
--- a/django/conf/admin_media/js/timeparse.js
+++ b/django/contrib/admin/media/js/timeparse.js
diff --git a/django/conf/admin_media/js/urlify.js b/django/contrib/admin/media/js/urlify.js
index 412130ad6f..412130ad6f 100644
--- a/django/conf/admin_media/js/urlify.js
+++ b/django/contrib/admin/media/js/urlify.js
diff --git a/django/conf/admin_templates/404.html b/django/contrib/admin/templates/admin/404.html
index 099466c4f1..9d7876ecbf 100644
--- a/django/conf/admin_templates/404.html
+++ b/django/contrib/admin/templates/admin/404.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block title %}Page not found{% endblock %}
diff --git a/django/conf/admin_templates/500.html b/django/contrib/admin/templates/admin/500.html
index 124e4018a9..34a28ff0f5 100644
--- a/django/conf/admin_templates/500.html
+++ b/django/contrib/admin/templates/admin/500.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; Server error</div>{% endblock %}
diff --git a/django/conf/admin_templates/base.html b/django/contrib/admin/templates/admin/base.html
index 64c80b934c..64c80b934c 100644
--- a/django/conf/admin_templates/base.html
+++ b/django/contrib/admin/templates/admin/base.html
diff --git a/django/conf/admin_templates/base_site.html b/django/contrib/admin/templates/admin/base_site.html
index 8e0874e401..7113c06d6c 100644
--- a/django/conf/admin_templates/base_site.html
+++ b/django/contrib/admin/templates/admin/base_site.html
@@ -1,4 +1,4 @@
-{% extends "base" %}
+{% extends "admin/base" %}
{% block title %}{{ title }} | Django site admin{% endblock %}
diff --git a/django/conf/admin_templates/delete_confirmation_generic.html b/django/contrib/admin/templates/admin/delete_confirmation.html
index e46b611baf..99b1cdce7a 100644
--- a/django/conf/admin_templates/delete_confirmation_generic.html
+++ b/django/contrib/admin/templates/admin/delete_confirmation.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block content %}
diff --git a/django/conf/admin_templates/index.html b/django/contrib/admin/templates/admin/index.html
index 7610b3a023..02c5bd8439 100644
--- a/django/conf/admin_templates/index.html
+++ b/django/contrib/admin/templates/admin/index.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block coltype %}colMS{% endblock %}
{% block bodyclass %}dashboard{% endblock %}
diff --git a/django/conf/admin_templates/login.html b/django/contrib/admin/templates/admin/login.html
index 7dec8e796a..ef4aa5aae2 100644
--- a/django/conf/admin_templates/login.html
+++ b/django/contrib/admin/templates/admin/login.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}{% endblock %}
diff --git a/django/conf/admin_templates/admin_object_history.html b/django/contrib/admin/templates/admin/object_history.html
index 580d47760f..d50936665a 100644
--- a/django/conf/admin_templates/admin_object_history.html
+++ b/django/contrib/admin/templates/admin/object_history.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}
<div class="breadcrumbs"><a href="../../../../">Home</a> &rsaquo; <a href="../../">{{ module_name }}</a> &rsaquo; <a href="../">{{ object|truncatewords:"18" }}</a> &rsaquo; History</div>
diff --git a/django/conf/admin_templates/template_validator.html b/django/contrib/admin/templates/admin/template_validator.html
index ddd9775f9f..f9ac09a77d 100644
--- a/django/conf/admin_templates/template_validator.html
+++ b/django/contrib/admin/templates/admin/template_validator.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block content %}
diff --git a/django/conf/admin_templates/doc/bookmarklets.html b/django/contrib/admin/templates/admin_doc/bookmarklets.html
index 9c64d32837..d396ec53b5 100644
--- a/django/conf/admin_templates/doc/bookmarklets.html
+++ b/django/contrib/admin/templates/admin_doc/bookmarklets.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; <a href="../">Documentation</a> &rsaquo; Bookmarklets</div>{% endblock %}
diff --git a/django/conf/admin_templates/doc/index.html b/django/contrib/admin/templates/admin_doc/index.html
index e205d0a486..77d2a96bf2 100644
--- a/django/conf/admin_templates/doc/index.html
+++ b/django/contrib/admin/templates/admin_doc/index.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Documentation</div>{% endblock %}
diff --git a/django/conf/admin_templates/doc/missing_docutils.html b/django/contrib/admin/templates/admin_doc/missing_docutils.html
index 2a47be26be..40004c41ab 100644
--- a/django/conf/admin_templates/doc/missing_docutils.html
+++ b/django/contrib/admin/templates/admin_doc/missing_docutils.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Documentation</div>{% endblock %}
diff --git a/django/conf/admin_templates/doc/model_detail.html b/django/contrib/admin/templates/admin_doc/model_detail.html
index bd58d2a9f1..d3621b7434 100644
--- a/django/conf/admin_templates/doc/model_detail.html
+++ b/django/contrib/admin/templates/admin_doc/model_detail.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block extrahead %}
diff --git a/django/conf/admin_templates/doc/model_index.html b/django/contrib/admin/templates/admin_doc/model_index.html
index c1554c0911..5896ee136e 100644
--- a/django/conf/admin_templates/doc/model_index.html
+++ b/django/contrib/admin/templates/admin_doc/model_index.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block coltype %}colSM{% endblock %}
diff --git a/django/conf/admin_templates/doc/template_detail.html b/django/contrib/admin/templates/admin_doc/template_detail.html
index 374b737022..448ff212ba 100644
--- a/django/conf/admin_templates/doc/template_detail.html
+++ b/django/contrib/admin/templates/admin_doc/template_detail.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> &rsaquo; <a href="../../">Documentation</a> &rsaquo; Templates &rsaquo; {{ name }}</div>{% endblock %}
diff --git a/django/conf/admin_templates/doc/template_filter_index.html b/django/contrib/admin/templates/admin_doc/template_filter_index.html
index 0dc651a214..23f0862457 100644
--- a/django/conf/admin_templates/doc/template_filter_index.html
+++ b/django/contrib/admin/templates/admin_doc/template_filter_index.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block coltype %}colSM{% endblock %}
diff --git a/django/conf/admin_templates/doc/template_tag_index.html b/django/contrib/admin/templates/admin_doc/template_tag_index.html
index 52ab08756a..83b2572322 100644
--- a/django/conf/admin_templates/doc/template_tag_index.html
+++ b/django/contrib/admin/templates/admin_doc/template_tag_index.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block coltype %}colSM{% endblock %}
diff --git a/django/conf/admin_templates/doc/view_detail.html b/django/contrib/admin/templates/admin_doc/view_detail.html
index 3fe26b3488..9fb06e7eb7 100644
--- a/django/conf/admin_templates/doc/view_detail.html
+++ b/django/contrib/admin/templates/admin_doc/view_detail.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> &rsaquo; <a href="../../">Documentation</a> &rsaquo; <a href="../">Views</a> &rsaquo; {{ name }}</div>{% endblock %}
diff --git a/django/conf/admin_templates/doc/view_index.html b/django/contrib/admin/templates/admin_doc/view_index.html
index c14b1f07ac..90ef5b1c90 100644
--- a/django/conf/admin_templates/doc/view_index.html
+++ b/django/contrib/admin/templates/admin_doc/view_index.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block coltype %}colSM{% endblock %}
diff --git a/django/conf/admin_templates/registration/logged_out.html b/django/contrib/admin/templates/registration/logged_out.html
index 92cf77e35b..1f4bd29790 100644
--- a/django/conf/admin_templates/registration/logged_out.html
+++ b/django/contrib/admin/templates/registration/logged_out.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a></div>{% endblock %}
diff --git a/django/conf/admin_templates/registration/password_change_done.html b/django/contrib/admin/templates/registration/password_change_done.html
index 8028c9f0d9..4345b9bcaa 100644
--- a/django/conf/admin_templates/registration/password_change_done.html
+++ b/django/contrib/admin/templates/registration/password_change_done.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password change</div>{% endblock %}
diff --git a/django/conf/admin_templates/registration/password_change_form.html b/django/contrib/admin/templates/registration/password_change_form.html
index 8ceefed86e..104249991c 100644
--- a/django/conf/admin_templates/registration/password_change_form.html
+++ b/django/contrib/admin/templates/registration/password_change_form.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password change</div>{% endblock %}
diff --git a/django/conf/admin_templates/registration/password_reset_done.html b/django/contrib/admin/templates/registration/password_reset_done.html
index 5c41d9f1d5..a8573e8e0e 100644
--- a/django/conf/admin_templates/registration/password_reset_done.html
+++ b/django/contrib/admin/templates/registration/password_reset_done.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password reset</div>{% endblock %}
diff --git a/django/conf/admin_templates/registration/password_reset_email.html b/django/contrib/admin/templates/registration/password_reset_email.html
index 4a5bb920d6..4a5bb920d6 100644
--- a/django/conf/admin_templates/registration/password_reset_email.html
+++ b/django/contrib/admin/templates/registration/password_reset_email.html
diff --git a/django/conf/admin_templates/registration/password_reset_form.html b/django/contrib/admin/templates/registration/password_reset_form.html
index c2dae2a5b3..4f9bcb5fc5 100644
--- a/django/conf/admin_templates/registration/password_reset_form.html
+++ b/django/contrib/admin/templates/registration/password_reset_form.html
@@ -1,4 +1,4 @@
-{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Password reset</div>{% endblock %}
diff --git a/django/templatetags/adminapplist.py b/django/contrib/admin/templatetags/adminapplist.py
index 92e1bd3ccb..92e1bd3ccb 100644
--- a/django/templatetags/adminapplist.py
+++ b/django/contrib/admin/templatetags/adminapplist.py
diff --git a/django/templatetags/adminmedia.py b/django/contrib/admin/templatetags/adminmedia.py
index 2b18252d7d..2b18252d7d 100644
--- a/django/templatetags/adminmedia.py
+++ b/django/contrib/admin/templatetags/adminmedia.py
diff --git a/django/templatetags/log.py b/django/contrib/admin/templatetags/log.py
index c88e28dabe..b24f7c1dad 100644
--- a/django/templatetags/log.py
+++ b/django/contrib/admin/templatetags/log.py
@@ -1,4 +1,4 @@
-from django.models.auth import log
+from django.models.admin import log
from django.core import template
class AdminLogNode(template.Node):
diff --git a/django/conf/urls/admin.py b/django/contrib/admin/urls/admin.py
index d03b88ceb4..d03b88ceb4 100644
--- a/django/conf/urls/admin.py
+++ b/django/contrib/admin/urls/admin.py
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 685f3b6cba..8ecf0a2c97 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -6,7 +6,7 @@ from django.core.template import loader
from django.core.exceptions import Http404, ObjectDoesNotExist, PermissionDenied
from django.core.extensions import DjangoContext as Context
from django.core.extensions import get_object_or_404, render_to_response
-from django.models.auth import log
+from django.models.admin import log
from django.utils.html import strip_tags
from django.utils.httpwrappers import HttpResponse, HttpResponseRedirect
from django.utils.text import capfirst, get_text_list
@@ -49,7 +49,7 @@ def get_query_string(original_params, new_params={}, remove=[]):
return '?' + '&amp;'.join(['%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20')
def index(request):
- return render_to_response('index', {'title': 'Site administration'}, context_instance=Context(request))
+ return render_to_response('admin/index', {'title': 'Site administration'}, context_instance=Context(request))
index = staff_member_required(index)
def change_list(request, app_label, module_name):
@@ -266,7 +266,7 @@ def change_list(request, app_label, module_name):
else:
pass # Invalid argument to "list_filter"
- raw_template = ['{% extends "base_site" %}\n']
+ raw_template = ['{% extends "admin/base_site" %}\n']
raw_template.append('{% block bodyclass %}change-list{% endblock %}\n')
if not is_popup:
raw_template.append('{%% block breadcrumbs %%}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; %s</div>{%% endblock %%}\n' % capfirst(opts.verbose_name_plural))
@@ -538,7 +538,7 @@ def _get_template(opts, app_label, add=False, change=False, show_delete=False, f
admin_field_objs = opts.admin.get_field_objs(opts)
ordered_objects = opts.get_ordered_objects()[:]
auto_populated_fields = [f for f in opts.fields if f.prepopulate_from]
- t = ['{% extends "base_site" %}\n']
+ t = ['{% extends "admin/base_site" %}\n']
t.append('{% block extrahead %}')
# Put in any necessary JavaScript imports.
@@ -1087,7 +1087,7 @@ def delete_stage(request, app_label, module_name, object_id):
log.log_action(request.user.id, opts.get_content_type_id(), object_id, obj_repr, log.DELETION)
request.user.add_message('The %s "%s" was deleted successfully.' % (opts.verbose_name, obj_repr))
return HttpResponseRedirect("../../")
- return render_to_response('delete_confirmation_generic', {
+ return render_to_response('admin/delete_confirmation', {
"title": "Are you sure?",
"object_name": opts.verbose_name,
"object": obj,
@@ -1102,7 +1102,7 @@ def history(request, app_label, module_name, object_id):
order_by=("action_time",), select_related=True)
# If no history was found, see whether this object even exists.
obj = get_object_or_404(mod, pk=object_id)
- return render_to_response('admin_object_history', {
+ return render_to_response('admin/object_history', {
'title': 'Change history: %r' % obj,
'action_list': action_list,
'module_name': capfirst(opts.verbose_name_plural),
diff --git a/django/contrib/admin/views/template.py b/django/contrib/admin/views/template.py
index 97f67e04c1..fbac6d4f12 100644
--- a/django/contrib/admin/views/template.py
+++ b/django/contrib/admin/views/template.py
@@ -23,7 +23,7 @@ def template_validator(request):
errors = manipulator.get_validation_errors(new_data)
if not errors:
request.user.add_message('The template is valid.')
- return render_to_response('template_validator', {
+ return render_to_response('admin/template_validator', {
'title': 'Template validator',
'form': formfields.FormWrapper(manipulator, new_data, errors),
}, context_instance=DjangoContext(request))
diff --git a/django/core/management.py b/django/core/management.py
index 046031e311..564697776d 100644
--- a/django/core/management.py
+++ b/django/core/management.py
@@ -17,7 +17,6 @@ APP_ARGS = '[modelmodule ...]'
# Use django.__path__[0] because we don't know which directory django into
# which has been installed.
PROJECT_TEMPLATE_DIR = os.path.join(django.__path__[0], 'conf', '%s_template')
-ADMIN_TEMPLATE_DIR = os.path.join(django.__path__[0], 'conf', 'admin_templates')
def _get_packages_insert(app_label):
return "INSERT INTO packages (label, name) VALUES ('%s', '%s');" % (app_label, app_label)
@@ -142,7 +141,7 @@ def get_sql_delete(mod):
if cursor is not None:
cursor.execute("SELECT id FROM content_types WHERE package = %s", [app_label])
for row in cursor.fetchall():
- output.append("DELETE FROM auth_admin_log WHERE content_type_id = %s;" % row[0])
+ output.append("DELETE FROM django_admin_log WHERE content_type_id = %s;" % row[0])
# Close database connection explicitly, in case this output is being piped
# directly into a database client, to avoid locking issues.
@@ -378,16 +377,8 @@ def startproject(project_name, directory):
"Creates a Django project for the given project_name in the given directory."
from random import choice
_start_helper('project', project_name, directory)
- # Populate TEMPLATE_DIRS for the admin templates, based on where Django is
- # installed.
- admin_settings_file = os.path.join(directory, project_name, 'settings', 'admin.py')
- settings_contents = open(admin_settings_file, 'r').read()
- fp = open(admin_settings_file, 'w')
- settings_contents = re.sub(r'(?s)\b(TEMPLATE_DIRS\s*=\s*\()(.*?)\)', "\\1\n r%r,\\2)" % ADMIN_TEMPLATE_DIR, settings_contents)
- fp.write(settings_contents)
- fp.close()
# Create a random SECRET_KEY hash, and put it in the main settings.
- main_settings_file = os.path.join(directory, project_name, 'settings', 'main.py')
+ main_settings_file = os.path.join(directory, project_name, 'settings.py')
settings_contents = open(main_settings_file, 'r').read()
fp = open(main_settings_file, 'w')
secret_key = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)])
diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py
index e7d6b98032..2cb5471fe5 100644
--- a/django/core/servers/basehttp.py
+++ b/django/core/servers/basehttp.py
@@ -602,7 +602,7 @@ class AdminMediaHandler:
from django.conf import settings
import django
self.application = application
- self.media_dir = django.__path__[0] + '/conf/admin_media'
+ self.media_dir = django.__path__[0] + '/contrib/admin/media'
self.media_url = settings.ADMIN_MEDIA_PREFIX
def __call__(self, environ, start_response):
diff --git a/django/middleware/admin.py b/django/middleware/admin.py
deleted file mode 100644
index 9c20cfc31c..0000000000
--- a/django/middleware/admin.py
+++ /dev/null
@@ -1,126 +0,0 @@
-from django.utils import httpwrappers
-from django.core.extensions import DjangoContext
-from django.core.extensions import render_to_response
-from django.models.auth import users
-from django.views.registration import passwords
-from django.views.auth.login import logout
-import base64, md5
-import cPickle as pickle
-from django.conf.settings import SECRET_KEY
-
-ERROR_MESSAGE = "Please enter a correct username and password. Note that both fields are case-sensitive."
-
-class AdminUserRequired:
- """
- Admin middleware. If this is enabled, access to the site will be granted only
- to valid users with the "is_staff" flag set.
- """
-
- def process_view(self, request, view_func, param_dict):
- """
- Make sure the user is logged in and is a valid admin user before
- allowing any access.
-
- Done at the view point because we need to know if we're running the
- password reset function.
- """
-
- # If this is the password reset view, we don't want to require login
- # Otherwise the password reset would need its own entry in the httpd
- # conf, which is a little uglier than this. Same goes for the logout
- # view.
-
- if view_func in (passwords.password_reset, passwords.password_reset_done, logout):
- return
-
- assert hasattr(request, 'session'), "The admin requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.middleware.sessions.SessionMiddleware' before %r." % self.__class__.__name__
-
- # Check for a logged in, valid user
- if self.user_is_valid(request.user):
- return
-
- # If this isn't already the login page, display it
- if not request.POST.has_key('this_is_the_login_form'):
- if request.POST:
- message = "Please log in again, because your session has expired. "\
- "Don't worry: Your submission has been saved."
- else:
- message = ""
- return self.display_login_form(request, message)
-
- # Check that the user accepts cookies.
- if not request.session.test_cookie_worked():
- message = "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
- return self.display_login_form(request, message)
-
- # Check the password
- username = request.POST.get('username', '')
- try:
- user = users.get_object(username__exact=username)
- except users.UserDoesNotExist:
- message = ERROR_MESSAGE
- if '@' in username:
- # Mistakenly entered e-mail address instead of username? Look it up.
- try:
- user = users.get_object(email__exact=username)
- except users.UserDoesNotExist:
- message = "Usernames cannot contain the '@' character."
- else:
- message = "Your e-mail address is not your username. Try '%s' instead." % user.username
- return self.display_login_form(request, message)
-
- # The user data is correct; log in the user in and continue
- else:
- if self.authenticate_user(user, request.POST.get('password', '')):
- request.session[users.SESSION_KEY] = user.id
- if request.POST.has_key('post_data'):
- post_data = decode_post_data(request.POST['post_data'])
- if post_data and not post_data.has_key('this_is_the_login_form'):
- # overwrite request.POST with the saved post_data, and continue
- request.POST = post_data
- request.user = user
- return
- else:
- request.session.delete_test_cookie()
- return httpwrappers.HttpResponseRedirect(request.path)
- else:
- return self.display_login_form(request, ERROR_MESSAGE)
-
- def display_login_form(self, request, error_message=''):
- 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'
- post_data = request.POST['post_data']
- elif request.POST:
- # User's session must have expired; save their post data
- post_data = encode_post_data(request.POST)
- else:
- post_data = encode_post_data({})
- return render_to_response(self.get_login_template_name(), {
- 'title': 'Log in',
- 'app_path': request.path,
- 'post_data': post_data,
- 'error_message': error_message
- }, context_instance=DjangoContext(request))
-
- def authenticate_user(self, user, password):
- return user.check_password(password) and user.is_staff
-
- def user_is_valid(self, user):
- return not user.is_anonymous() and user.is_staff
-
- def get_login_template_name(self):
- return "login"
-
-def encode_post_data(post_data):
- pickled = pickle.dumps(post_data)
- pickled_md5 = md5.new(pickled + SECRET_KEY).hexdigest()
- return base64.encodestring(pickled + pickled_md5)
-
-def decode_post_data(encoded_data):
- encoded_data = base64.decodestring(encoded_data)
- pickled, tamper_check = encoded_data[:-32], encoded_data[-32:]
- if md5.new(pickled + SECRET_KEY).hexdigest() != tamper_check:
- from django.core.exceptions import SuspiciousOperation
- raise SuspiciousOperation, "User may have tampered with session cookie."
- return pickle.loads(pickled)
diff --git a/django/models/auth.py b/django/models/auth.py
index 20d846157e..2a65290085 100644
--- a/django/models/auth.py
+++ b/django/models/auth.py
@@ -176,49 +176,3 @@ class Message(meta.Model):
def __repr__(self):
return self.message
-
-class LogEntry(meta.Model):
- action_time = meta.DateTimeField(auto_now=True)
- user = meta.ForeignKey(User)
- content_type = meta.ForeignKey(core.ContentType, blank=True, null=True)
- object_id = meta.TextField(blank=True, null=True)
- object_repr = meta.CharField(maxlength=200)
- action_flag = meta.PositiveSmallIntegerField()
- change_message = meta.TextField(blank=True)
- class META:
- module_name = 'log'
- verbose_name_plural = 'log entries'
- db_table = 'auth_admin_log'
- ordering = ('-action_time',)
- module_constants = {
- 'ADDITION': 1,
- 'CHANGE': 2,
- 'DELETION': 3,
- }
-
- def __repr__(self):
- return str(self.action_time)
-
- def is_addition(self):
- return self.action_flag == ADDITION
-
- def is_change(self):
- return self.action_flag == CHANGE
-
- def is_deletion(self):
- return self.action_flag == DELETION
-
- def get_edited_object(self):
- "Returns the edited object represented by this log entry"
- return self.get_content_type().get_object_for_this_type(pk=self.object_id)
-
- def get_admin_url(self):
- """
- Returns the admin URL to edit the object represented by this log entry.
- This is relative to the Django admin index page.
- """
- return "%s/%s/%s/" % (self.get_content_type().package, self.get_content_type().python_module_name, self.object_id)
-
- def _module_log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):
- e = LogEntry(None, None, user_id, content_type_id, object_id, object_repr[:200], action_flag, change_message)
- e.save()