From 06f1d0114ac6a051ab5882738b84a23e243c5864 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Sat, 20 Oct 2018 23:18:35 +0100 Subject: [PATCH] renderer: Handle deeper nesting Deeper nesting, such as nesting under and API version, breaks the openapi renderer. Resolve this by recursively parsing the nested sections in the coreapi document. Signed-off-by: Stephen Finucane --- rest_framework/renderers.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 375c38a85..d8f33cf5c 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -989,10 +989,9 @@ class _BaseOpenAPIRenderer: operation['tags'] = [tag] return operation - def get_paths(self, document): + def get_paths(self, document, tag=None): paths = {} - tag = None for name, link in document.links.items(): path = urlparse.urlparse(link.url).path method = link.action.lower() @@ -1000,11 +999,7 @@ class _BaseOpenAPIRenderer: paths[path][method] = self.get_operation(link, name, tag=tag) for tag, section in document.data.items(): - for name, link in section.links.items(): - path = urlparse.urlparse(link.url).path - method = link.action.lower() - paths.setdefault(path, {}) - paths[path][method] = self.get_operation(link, name, tag=tag) + paths.update(self.get_paths(section, tag)) return paths