mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-26 11:33:59 +03:00
format_suffix_patterns
now support include
-style nested URL patterns. Fixes #593
This commit is contained in:
parent
37d49429ca
commit
2c05faa52a
|
@ -1,5 +1,34 @@
|
||||||
from rest_framework.compat import url
|
from rest_framework.compat import url, include
|
||||||
from rest_framework.settings import api_settings
|
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 not isinstance(urlpattern, RegexURLResolver):
|
||||||
|
# Regular URL pattern
|
||||||
|
|
||||||
|
# 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))
|
||||||
|
else:
|
||||||
|
# Set of included URL patterns
|
||||||
|
print(type(urlpattern))
|
||||||
|
regex = urlpattern.regex.pattern
|
||||||
|
namespace = urlpattern.namespace
|
||||||
|
app_name = urlpattern.app_name
|
||||||
|
patterns = apply_suffix_patterns(urlpattern.url_patterns,
|
||||||
|
suffix_pattern,
|
||||||
|
suffix_required)
|
||||||
|
ret.append(url(regex, include(patterns, namespace, app_name)))
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def format_suffix_patterns(urlpatterns, suffix_required=False, allowed=None):
|
def format_suffix_patterns(urlpatterns, suffix_required=False, allowed=None):
|
||||||
|
@ -28,15 +57,4 @@ def format_suffix_patterns(urlpatterns, suffix_required=False, allowed=None):
|
||||||
else:
|
else:
|
||||||
suffix_pattern = r'\.(?P<%s>[a-z]+)$' % suffix_kwarg
|
suffix_pattern = r'\.(?P<%s>[a-z]+)$' % suffix_kwarg
|
||||||
|
|
||||||
ret = []
|
return apply_suffix_patterns(urlpatterns, suffix_pattern, suffix_required)
|
||||||
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
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user