Opened 11 years ago

Closed 10 years ago

#21132 closed Bug (fixed)

AdminSite cannot handle different namespace

Reported by: Markus Holtermann Owned by: Tim Graham
Component: contrib.admin Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Assume you have a custom admin inheriting from django.contrib.admin.sites.AdminSite and you want to run it with its own namespace:

# testproject/urls.py 
from django.conf.urls import patterns, include, url
from django.contrib.admin.sites import AdminSite

my_admin = AdminSite(name='name', app_name='app_name')

urlpatterns = patterns('',
    url(r'^admin/', include(my_admin.urls)),
)

This is going to fail with the following error:

Traceback (most recent call last):
  File "/home/markus/.venvs/django-namespace-test/lib/python3.3/site-packages/django/core/urlresolvers.py", line 482, in reverse
    extra, resolver = resolver.namespace_dict[ns]
KeyError: 'admin'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/markus/.venvs/django-namespace-test/lib/python3.3/site-packages/django/core/handlers/base.py", line 115, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/home/markus/.venvs/django-namespace-test/lib/python3.3/site-packages/django/contrib/admin/sites.py", line 219, in wrapper
    return self.admin_view(view, cacheable)(*args, **kwargs)
  File "/home/markus/.venvs/django-namespace-test/lib/python3.3/site-packages/django/utils/decorators.py", line 91, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/home/markus/.venvs/django-namespace-test/lib/python3.3/site-packages/django/views/decorators/cache.py", line 89, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/home/markus/.venvs/django-namespace-test/lib/python3.3/site-packages/django/contrib/admin/sites.py", line 198, in inner
    current_app=self.name):
  File "/home/markus/.venvs/django-namespace-test/lib/python3.3/site-packages/django/core/urlresolvers.py", line 492, in reverse
    key)
django.core.urlresolvers.NoReverseMatch: 'admin' is not a registered namespace

Change History (6)

comment:1 by Florian Apolloner, 11 years ago

Component: Uncategorizedcontrib.admin
Triage Stage: UnreviewedAccepted
Type: UncategorizedBug
Version: 1.5master

The whole admin is currently built on the idea that the app is named admin, I think we should just deprecate the app_name argument.

comment:2 by Vajrasky Kok, 11 years ago

Has patch: set
Owner: changed from nobody to Vajrasky Kok
Status: newassigned

This ticket is quite big (at least for me). This PR is the first step to fix this issue. https://github.com/django/django/pull/1845

There are more to be done. You can check by:
$ grep -R "admin:" *

in reply to:  1 comment:3 by German Larrain, 11 years ago

Replying to apollo13:

The whole admin is currently built on the idea that the app is named admin, I think we should just deprecate the app_name argument.

I disagree. I think we should fix it. Hardcoded admin strings all around are, IMO, a very bad idea.

On the other hand, I'm not really an expert in app and URL namespacing so take my comment with a grain of salt.

PS: this topic is currently discussed in the mailing list https://groups.google.com/forum/#!topic/django-developers/pc5A3qrvITQ

comment:4 by Vlastimil Zíma, 11 years ago

+1 for removal of app_name argument. It mostly just confuses developers since it can not be changed to anything else, see #19002, #19554, #22418.

comment:5 by Tim Graham, 10 years ago

Owner: changed from Vajrasky Kok to Tim Graham

PR to remove the app_name argument. There seems no need for a deprecation since the functionality doesn't work and isn't documented.

comment:6 by Tim Graham <timograham@…>, 10 years ago

Resolution: fixed
Status: assignedclosed

In cf79b57ad09c145b82ccaab798d88958316027cf:

Fixed #21132 -- Removed the useless app_name argument to AdminSite.

Thanks MarkusH for the report and Florian for review.

Note: See TracTickets for help on using tickets.
Back to Top