From 4b691c402707775c3048a90531024f3bc5be6f91 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 20 Sep 2012 13:06:27 +0100 Subject: Change package name: djangorestframework -> rest_framework --- rest_framework/urlpatterns.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 rest_framework/urlpatterns.py (limited to 'rest_framework/urlpatterns.py') 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 -- cgit v1.2.3 From 272fddc9526f09e4904af7c282edd003b12be55a Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Fri, 5 Oct 2012 15:37:50 +0100 Subject: Fix bug in format suffix patterns --- rest_framework/urlpatterns.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'rest_framework/urlpatterns.py') diff --git a/rest_framework/urlpatterns.py b/rest_framework/urlpatterns.py index 7d09651a..7640f45d 100644 --- a/rest_framework/urlpatterns.py +++ b/rest_framework/urlpatterns.py @@ -8,7 +8,7 @@ def format_suffix_patterns(urlpatterns, suffix_required=False, suffix_kwarg=None 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 + suffix_pattern = '\.(?P<%s>[a-z]+)$' % suffix_kwarg ret = [] for urlpattern in urlpatterns: -- cgit v1.2.3 From 3e77090b2142e7802203b5e37f81b5d4cbb6f40d Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Fri, 5 Oct 2012 15:38:12 +0100 Subject: Fix bug in format suffix patterns --- rest_framework/urlpatterns.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'rest_framework/urlpatterns.py') diff --git a/rest_framework/urlpatterns.py b/rest_framework/urlpatterns.py index 7640f45d..a040b621 100644 --- a/rest_framework/urlpatterns.py +++ b/rest_framework/urlpatterns.py @@ -8,7 +8,7 @@ def format_suffix_patterns(urlpatterns, suffix_required=False, suffix_kwarg=None 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 + suffix_pattern = r'\.(?P<%s>[a-z]+)$' % suffix_kwarg ret = [] for urlpattern in urlpatterns: -- cgit v1.2.3 From 115e61be0900b3d5dd93ff84f20629311aceff9f Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 9 Oct 2012 12:01:17 +0100 Subject: Added quickstart guide --- rest_framework/urlpatterns.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'rest_framework/urlpatterns.py') diff --git a/rest_framework/urlpatterns.py b/rest_framework/urlpatterns.py index a040b621..386c78a2 100644 --- a/rest_framework/urlpatterns.py +++ b/rest_framework/urlpatterns.py @@ -2,13 +2,34 @@ 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): +def format_suffix_patterns(urlpatterns, suffix_required=False, + suffix_kwarg=None, allowed=None): """ Supplement existing urlpatterns with corrosponding patterns that also include a '.format' suffix. Retains urlpattern ordering. + + suffix_required: + If `True`, only suffixed URLs will be generated, and non-suffixed + URLs will not be used. Defaults to `False`. + + suffix_kwarg: + The name of the kwarg that will be passed to the view. + Defaults to 'format'. + + allowed: + An optional tuple/list of allowed suffixes. eg ['json', 'api'] + Defaults to `None`, which allows any suffix. + """ suffix_kwarg = suffix_kwarg or api_settings.FORMAT_SUFFIX_KWARG - suffix_pattern = r'\.(?P<%s>[a-z]+)$' % suffix_kwarg + if allowed: + if len(allowed) == 1: + allowed_pattern = allowed[0] + else: + allowed_pattern = '(%s)' % '|'.join(allowed) + suffix_pattern = r'\.(?P<%s>%s)$' % (suffix_kwarg, allowed_pattern) + else: + suffix_pattern = r'\.(?P<%s>[a-z]+)$' % suffix_kwarg ret = [] for urlpattern in urlpatterns: -- cgit v1.2.3 From efabd2bb1b762fbdee2b48fa3a6ccb8f23c7e8dc Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Fri, 19 Oct 2012 19:59:46 +0100 Subject: docs, docs, docs, docs, docs, docs, docs --- rest_framework/urlpatterns.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'rest_framework/urlpatterns.py') diff --git a/rest_framework/urlpatterns.py b/rest_framework/urlpatterns.py index 386c78a2..316ccd19 100644 --- a/rest_framework/urlpatterns.py +++ b/rest_framework/urlpatterns.py @@ -2,26 +2,23 @@ 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, allowed=None): +def format_suffix_patterns(urlpatterns, suffix_required=False, allowed=None): """ Supplement existing urlpatterns with corrosponding patterns that also include a '.format' suffix. Retains urlpattern ordering. + urlpatterns: + A list of URL patterns. + suffix_required: If `True`, only suffixed URLs will be generated, and non-suffixed URLs will not be used. Defaults to `False`. - suffix_kwarg: - The name of the kwarg that will be passed to the view. - Defaults to 'format'. - allowed: An optional tuple/list of allowed suffixes. eg ['json', 'api'] Defaults to `None`, which allows any suffix. - """ - suffix_kwarg = suffix_kwarg or api_settings.FORMAT_SUFFIX_KWARG + suffix_kwarg = api_settings.FORMAT_SUFFIX_KWARG if allowed: if len(allowed) == 1: allowed_pattern = allowed[0] -- cgit v1.2.3