Skip to content

Commit ed38371

Browse files
committed
Fix docs multiple nested and multiple methods
1 parent 3110635 commit ed38371

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

rest_framework/templates/rest_framework/docs/document.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ <h2 id="{{ section_key }}" class="coredocs-section-title">{{ section_key }} <a h
2020
</a></h2>
2121
{% endif %}
2222

23-
{% for link_key, link in section.links|items %}
23+
{% for link_key, link in section|schema_links|items %}
2424
{% include "rest_framework/docs/link.html" %}
2525
{% endfor %}
2626
{% endfor %}

rest_framework/templates/rest_framework/docs/sidebar.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ <h3 class="brand"><a href="#">{{ document.title }}</a></h3>
1010
<li data-toggle="collapse" data-target="#{{ section_key }}-dropdown" class="collapsed">
1111
<a><i class="fa fa-dot-circle-o fa-lg"></i> {% if section_key %}{{ section_key }}{% else %}API Endpoints{% endif %} <span class="arrow"></span></a>
1212
<ul class="sub-menu {% if section_key %}collapse{% endif %}" id="{{ section_key }}-dropdown">
13-
{% for link_key, link in section.links|items %}
13+
{% for link_key, link in section|schema_links|items %}
1414
<li><a href="#{{ section_key }}-{{ link_key }}">{{ link.title|default:link_key }}</a></li>
1515
{% endfor %}
1616
</ul>

rest_framework/templatetags/rest_framework.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,29 @@ def items(value):
244244
return value.items()
245245

246246

247+
@register.filter
248+
def schema_links(section, sec_key=None):
249+
"""
250+
Recursively find every link in a schema, even nested.
251+
"""
252+
NESTED_FORMAT = '%s > %s'
253+
links = section.links
254+
if section.data:
255+
data = section.data.items()
256+
for sub_section_key, sub_section in data:
257+
new_links = schema_links(sub_section, sec_key=sub_section_key)
258+
links.update(new_links)
259+
260+
if sec_key is not None:
261+
new_links = OrderedDict()
262+
for link_key, link in links.items():
263+
new_key = NESTED_FORMAT % (sec_key, link_key)
264+
new_links.update({new_key: link})
265+
return new_links
266+
267+
return links
268+
269+
247270
@register.filter
248271
def add_nested_class(value):
249272
if isinstance(value, dict):

0 commit comments

Comments
 (0)