|
7 | 7 |
|
8 | 8 | class ApiDocumentation(object): |
9 | 9 |
|
10 | | - def __init__(self, filter_param=None): |
| 10 | + def __init__(self, parent_app=None): |
11 | 11 | """ |
12 | | - :param filter_param: namespace or app_name |
| 12 | + parent_app: namespace or app_name |
13 | 13 | """ |
| 14 | + |
| 15 | + self.parent_app = parent_app |
14 | 16 | self.endpoints = [] |
15 | 17 | root_urlconf = __import__(settings.ROOT_URLCONF) |
16 | 18 | 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) |
18 | 20 | else: |
19 | | - self.get_all_view_names(root_urlconf.urlpatterns, filter_param=filter_param) |
| 21 | + self.get_all_view_names(root_urlconf.urlpatterns) |
20 | 22 |
|
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): |
22 | 24 | 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 | + |
25 | 28 | 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]): |
27 | 30 | api_endpoint = ApiEndpoint(pattern, parent_pattern) |
28 | 31 | self.endpoints.append(api_endpoint) |
29 | 32 |
|
30 | 33 | 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 | + """ |
32 | 37 | return hasattr(pattern.callback, 'cls') and issubclass(pattern.callback.cls, APIView) |
33 | 38 |
|
34 | 39 | def get_endpoints(self): |
|
0 commit comments