Skip to content

Commit 71deedb

Browse files
authored
Merge pull request #2 from mohsenjavidpanah/master
Django FORCE_SCRIPT_NAME setting
2 parents b92410c + e42274e commit 71deedb

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

redocs/api_parser.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from django.urls import URLPattern as RegexURLPattern
66
from django.urls import URLResolver as RegexURLResolver
77
except:
8-
from django.core.urlresolvers import RegexURLResolver, RegexURLPattern
8+
from django.core.urlresolvers import RegexURLResolver, RegexURLPattern
99
from rest_framework.views import APIView
1010
from .api_endpoint import ApiEndpoint
1111
from django.contrib.admindocs.views import simplify_regex
@@ -25,7 +25,10 @@ def __init__(self, *args, **kwargs):
2525
self.patterns = root_urlconf.urlpatterns
2626

2727
def parse(self):
28-
self._parse(self.patterns, self.endpoints)
28+
self._parse(
29+
self.patterns,
30+
self.endpoints
31+
)
2932

3033
def _parse(self, urlpatterns, parent_node, prefix=''):
3134
for pattern in urlpatterns:
@@ -62,5 +65,3 @@ def _get_pattern_name(pattern):
6265
if hasattr(_pattern, '_route'):
6366
return str(_pattern._route)
6467
return ''
65-
66-

redocs/urls.py

-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,3 @@
44
urlpatterns = [
55
url(r'^$', views.get_endpoints),
66
]
7-

redocs/views.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
import json
2+
13
from django.shortcuts import render
24
from .api_parser import ApiParser
3-
import json
5+
from django.conf import settings
46

57

68
def walk_endpoints(tree, endpoints=None):
@@ -27,6 +29,21 @@ def get_endpoints(request):
2729
api_parser.parse()
2830
endpoints = walk_endpoints(api_parser.endpoints)
2931

32+
force_script_name = getattr(settings, 'FORCE_SCRIPT_NAME', '')
33+
if force_script_name:
34+
if force_script_name.endswith('/'):
35+
force_script_name = force_script_name[:-1]
36+
37+
temp_endpoints = endpoints.copy()
38+
endpoints = []
39+
for item in temp_endpoints:
40+
new_item = {}
41+
for k, v in item.items():
42+
if k == 'path':
43+
v = force_script_name + v
44+
new_item[k] = v
45+
endpoints.append(new_item)
46+
3047
return render(request, 'redocs/index.html', {
3148
'endpoints': json.dumps(endpoints),
3249
})

0 commit comments

Comments
 (0)