diff options
| author | Michael Elovskikh | 2013-01-28 16:26:16 +0600 |
|---|---|---|
| committer | Michael Elovskikh | 2013-01-28 16:26:16 +0600 |
| commit | 499d6424aee5b71b8e6b2500bf14fa85321bfc26 (patch) | |
| tree | 34f575fb078377208ded5251aea050668355d82a /rest_framework/urlpatterns.py | |
| parent | 180c94dc44a9cc5b882364a58b0b12a8ab430c22 (diff) | |
| parent | 3bcd38b7d0ddaa2c051ad230cb0d749f9737fd82 (diff) | |
| download | django-rest-framework-499d6424aee5b71b8e6b2500bf14fa85321bfc26.tar.bz2 | |
Merge branch 'upstream_master' into docs_patch_method
Conflicts:
docs/api-guide/authentication.md
Diffstat (limited to 'rest_framework/urlpatterns.py')
| -rw-r--r-- | rest_framework/urlpatterns.py | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/rest_framework/urlpatterns.py b/rest_framework/urlpatterns.py index 143928c9..47789026 100644 --- a/rest_framework/urlpatterns.py +++ b/rest_framework/urlpatterns.py @@ -1,5 +1,35 @@ -from rest_framework.compat import url +from rest_framework.compat import url, include from rest_framework.settings import api_settings +from django.core.urlresolvers import RegexURLResolver + + +def apply_suffix_patterns(urlpatterns, suffix_pattern, suffix_required): + ret = [] + for urlpattern in urlpatterns: + if isinstance(urlpattern, RegexURLResolver): + # Set of included URL patterns + regex = urlpattern.regex.pattern + namespace = urlpattern.namespace + app_name = urlpattern.app_name + kwargs = urlpattern.default_kwargs + # Add in the included patterns, after applying the suffixes + patterns = apply_suffix_patterns(urlpattern.url_patterns, + suffix_pattern, + suffix_required) + ret.append(url(regex, include(patterns, namespace, app_name), kwargs)) + + else: + # Regular URL pattern + regex = urlpattern.regex.pattern.rstrip('$') + suffix_pattern + view = urlpattern._callback or urlpattern._callback_str + kwargs = urlpattern.default_args + name = urlpattern.name + # Add in both the existing and the new urlpattern + if not suffix_required: + ret.append(urlpattern) + ret.append(url(regex, view, kwargs, name)) + + return ret def format_suffix_patterns(urlpatterns, suffix_required=False, allowed=None): @@ -28,15 +58,4 @@ def format_suffix_patterns(urlpatterns, suffix_required=False, allowed=None): else: suffix_pattern = r'\.(?P<%s>[a-z]+)$' % suffix_kwarg - ret = [] - for urlpattern in urlpatterns: - # Form our complementing '.format' urlpattern - regex = urlpattern.regex.pattern.rstrip('$') + suffix_pattern - view = urlpattern._callback or urlpattern._callback_str - kwargs = urlpattern.default_args - name = urlpattern.name - # Add in both the existing and the new urlpattern - if not suffix_required: - ret.append(urlpattern) - ret.append(url(regex, view, kwargs, name)) - return ret + return apply_suffix_patterns(urlpatterns, suffix_pattern, suffix_required) |
