diff options
Diffstat (limited to 'rest_framework/urlpatterns.py')
| -rw-r--r-- | rest_framework/urlpatterns.py | 24 | 
1 files changed, 24 insertions, 0 deletions
| diff --git a/rest_framework/urlpatterns.py b/rest_framework/urlpatterns.py new file mode 100644 index 00000000..7d09651a --- /dev/null +++ b/rest_framework/urlpatterns.py @@ -0,0 +1,24 @@ +from django.conf.urls.defaults import url +from rest_framework.settings import api_settings + + +def format_suffix_patterns(urlpatterns, suffix_required=False, suffix_kwarg=None): +    """ +    Supplement existing urlpatterns with corrosponding patterns that also +    include a '.format' suffix.  Retains urlpattern ordering. +    """ +    suffix_kwarg = suffix_kwarg or api_settings.FORMAT_SUFFIX_KWARG +    suffix_pattern = '.(?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 | 
