Last active
August 29, 2015 14:06
-
-
Save guillaumepiot/89c61981ffd9848ffda7 to your computer and use it in GitHub Desktop.
DJANGO - Decorate "include" in urlpatterns
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.core.urlresolvers import RegexURLResolver | |
from django.contrib.auth.decorators import login_required | |
from django.conf.urls import patterns, include, url | |
from django.conf import settings | |
from django.contrib import admin | |
admin.autodiscover() | |
def decorate_url(decorator, urlconf): | |
'''Recreates the url object with the callback decorated''' | |
# urlconf autoresolves names, so callback will always be a function | |
return url(urlconf._regex, decorator(urlconf.callback), urlconf.default_args, urlconf.name) | |
def decorate_include(decorator, urlpatterns): | |
urls = [ | |
decorate_url(decorator, urlconf) if not isinstance(urlconf, RegexURLResolver) else decorate_include(decorator, urlconf) | |
for urlconf in urlpatterns[0].urlpatterns | |
] | |
return (urls,) + urlpatterns[1:] | |
urlpatterns = patterns('', | |
# Example | |
url(r'^', decorate_include(login_required, include('cmsbase.urls', namespace='cms'))), | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment