Skip to content

Commit 4c323d2

Browse files
author
Emmanouil Konstantinidis
committed
Rename URL parameter
1 parent 58e1d1e commit 4c323d2

File tree

4 files changed

+22
-15
lines changed

4 files changed

+22
-15
lines changed

rest_framework_docs/api_docs.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,33 @@
77

88
class ApiDocumentation(object):
99

10-
def __init__(self, filter_param=None):
10+
def __init__(self, parent_app=None):
1111
"""
12-
:param filter_param: namespace or app_name
12+
parent_app: namespace or app_name
1313
"""
14+
15+
self.parent_app = parent_app
1416
self.endpoints = []
1517
root_urlconf = __import__(settings.ROOT_URLCONF)
1618
if hasattr(root_urlconf, 'urls'):
17-
self.get_all_view_names(root_urlconf.urls.urlpatterns, filter_param=filter_param)
19+
self.get_all_view_names(root_urlconf.urls.urlpatterns)
1820
else:
19-
self.get_all_view_names(root_urlconf.urlpatterns, filter_param=filter_param)
21+
self.get_all_view_names(root_urlconf.urlpatterns)
2022

21-
def get_all_view_names(self, urlpatterns, parent_pattern=None, filter_param=None):
23+
def get_all_view_names(self, urlpatterns, parent_pattern=None):
2224
for pattern in urlpatterns:
23-
if isinstance(pattern, RegexURLResolver) and (not filter_param or filter_param in [pattern.app_name, pattern.namespace]):
24-
self.get_all_view_names(urlpatterns=pattern.url_patterns, parent_pattern=pattern, filter_param=filter_param)
25+
if isinstance(pattern, RegexURLResolver) and (self.parent_app in [pattern.app_name, pattern.namespace]):
26+
self.get_all_view_names(urlpatterns=pattern.url_patterns, parent_pattern=pattern)
27+
2528
elif isinstance(pattern, RegexURLPattern) and self._is_drf_view(pattern):
26-
if not filter_param or (parent_pattern and filter_param in [parent_pattern.app_name, parent_pattern.namespace]):
29+
if not self.parent_app or (parent_pattern and self.parent_app in [parent_pattern.app_name, parent_pattern.namespace]):
2730
api_endpoint = ApiEndpoint(pattern, parent_pattern)
2831
self.endpoints.append(api_endpoint)
2932

3033
def _is_drf_view(self, pattern):
31-
# Should check whether a pattern inherits from DRF's APIView
34+
"""
35+
Should check whether a pattern inherits from DRF's APIView
36+
"""
3237
return hasattr(pattern.callback, 'cls') and issubclass(pattern.callback.cls, APIView)
3338

3439
def get_endpoints(self):

rest_framework_docs/api_endpoint.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ def __init__(self, pattern, parent_pattern=None):
1010
self.pattern = pattern
1111
self.callback = pattern.callback
1212
self.docstring = self.__get_docstring__()
13+
1314
if parent_pattern:
1415
self.name_parent = parent_pattern.namespace or parent_pattern.app_name or \
1516
simplify_regex(parent_pattern.regex.pattern).replace('/', '-')
@@ -19,7 +20,7 @@ def __init__(self, pattern, parent_pattern=None):
1920
else:
2021
self.name_parent = ''
2122
self.name = ''
22-
# self.labels = (self.name_parent, self.name, slugify(self.name))
23+
2324
self.labels = dict(parent=self.name_parent, name=self.name)
2425
self.path = self.__get_path__(parent_pattern)
2526
self.allowed_methods = self.__get_allowed_methods__()

rest_framework_docs/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
urlpatterns = [
55
# Url to view the API Docs
66
url(r'^$', DRFDocsView.as_view(), name='drfdocs'),
7+
78
# Url to view the API Docs with a specific namespace or app_name
8-
url(r'^(?P<filter_param>[\w-]+)/$', DRFDocsView.as_view(), name='drfdocs-filter'),
9+
url(r'^(?P<parent_app>[\w-]+)/$', DRFDocsView.as_view(), name='drfdocs-filter'),
910
]

rest_framework_docs/views.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ class DRFDocsView(TemplateView):
1111
def get_context_data(self, **kwargs):
1212
settings = DRFSettings().settings
1313
search_query = self.request.GET.get("search", "")
14-
filter_param = self.kwargs.get("filter_param", None)
14+
parent_app = self.kwargs.get("parent_app", None)
1515

1616
if settings["HIDE_DOCS"]:
1717
raise Http404("Django Rest Framework Docs are hidden. Check your settings.")
1818

19-
docs = ApiDocumentation(filter_param=filter_param)
19+
docs = ApiDocumentation(parent_app=parent_app)
2020
endpoints = docs.get_endpoints()
2121

22-
if filter_param and not endpoints:
23-
raise Http404("The are no endpoints for \"%s\"." % filter_param)
22+
if parent_app and not endpoints:
23+
raise Http404("The are no endpoints for \"%s\"." % parent_app)
2424

2525
if search_query and endpoints:
2626
endpoints = [endpoint for endpoint in endpoints if search_query in endpoint.path]

0 commit comments

Comments
 (0)