|
0
|
1 |
from django.core.urlresolvers import RegexURLPattern, RegexURLResolver |
|
|
2 |
from django.core.exceptions import ImproperlyConfigured |
|
|
3 |
|
|
|
4 |
__all__ = ['handler404', 'handler500', 'include', 'patterns', 'url'] |
|
|
5 |
|
|
|
6 |
handler404 = 'django.views.defaults.page_not_found' |
|
|
7 |
handler500 = 'django.views.defaults.server_error' |
|
|
8 |
|
|
|
9 |
def include(arg, namespace=None, app_name=None): |
|
|
10 |
if isinstance(arg, tuple): |
|
|
11 |
# callable returning a namespace hint |
|
|
12 |
if namespace: |
|
|
13 |
raise ImproperlyConfigured('Cannot override the namespace for a dynamic module that provides a namespace') |
|
|
14 |
urlconf_module, app_name, namespace = arg |
|
|
15 |
else: |
|
|
16 |
# No namespace hint - use manually provided namespace |
|
|
17 |
urlconf_module = arg |
|
|
18 |
return (urlconf_module, app_name, namespace) |
|
|
19 |
|
|
|
20 |
def patterns(prefix, *args): |
|
|
21 |
pattern_list = [] |
|
|
22 |
for t in args: |
|
|
23 |
if isinstance(t, (list, tuple)): |
|
|
24 |
t = url(prefix=prefix, *t) |
|
|
25 |
elif isinstance(t, RegexURLPattern): |
|
|
26 |
t.add_prefix(prefix) |
|
|
27 |
pattern_list.append(t) |
|
|
28 |
return pattern_list |
|
|
29 |
|
|
|
30 |
def url(regex, view, kwargs=None, name=None, prefix=''): |
|
|
31 |
if isinstance(view, (list,tuple)): |
|
|
32 |
# For include(...) processing. |
|
|
33 |
urlconf_module, app_name, namespace = view |
|
|
34 |
return RegexURLResolver(regex, urlconf_module, kwargs, app_name=app_name, namespace=namespace) |
|
|
35 |
else: |
|
|
36 |
if isinstance(view, basestring): |
|
|
37 |
if not view: |
|
|
38 |
raise ImproperlyConfigured('Empty URL pattern view name not permitted (for pattern %r)' % regex) |
|
|
39 |
if prefix: |
|
|
40 |
view = prefix + '.' + view |
|
|
41 |
return RegexURLPattern(regex, view, kwargs, name) |
|
|
42 |
|