Skip to content

Commit b0b067a

Browse files
committed
Merge pull request noirbizarre#38 from randlet/force-script-name
Take FORCE_SCRIPT_NAME setting into account
2 parents 44bfaa4 + bfb5492 commit b0b067a

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

djangojs/tests/test_urls.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,17 @@ def test_urls_disabled(self):
173173
self.result = self.get_result() # To take override_settings in account
174174
self.assertEqual(len(self.result.keys()), 0)
175175

176+
@override_settings(JS_CACHE_DURATION=0)
177+
def test_force_script_name(self):
178+
from django.core.urlresolvers import set_script_prefix, _prefixes
179+
180+
try:
181+
set_script_prefix("/force_script")
182+
self.result = self.get_result() # To take override_settings in account
183+
finally:
184+
del _prefixes.value
185+
186+
self.assertEqual(self.result['django_js_urls'], '/force_script/djangojs/urls')
176187

177188
class UrlsAsDictTest(UrlsTestMixin, TestCase):
178189

@@ -200,3 +211,16 @@ def test_render(self):
200211
self.assertEqual(self.response.status_code, 200)
201212
self.assertEqual(self.response['Content-Type'], 'application/json')
202213
self.assertIsNotNone(self.result)
214+
215+
@override_settings(JS_CACHE_DURATION=0)
216+
def test_force_script_name(self):
217+
from django.core.urlresolvers import set_script_prefix, _prefixes
218+
try:
219+
url = reverse('django_js_urls')
220+
set_script_prefix("/force_script")
221+
response = self.client.get(url)
222+
finally:
223+
del _prefixes.value
224+
225+
result = json.loads(response.content.decode())
226+
self.assertEqual(result['django_js_urls'], '/force_script/djangojs/urls')

djangojs/urls_serializer.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import types
99

1010
from django.core.serializers.json import DjangoJSONEncoder
11-
from django.core.urlresolvers import RegexURLPattern, RegexURLResolver
11+
from django.core.urlresolvers import RegexURLPattern, RegexURLResolver, get_script_prefix
1212
from django.utils import six
1313

1414
from djangojs.conf import settings
@@ -53,6 +53,9 @@ def urls_as_json():
5353
def _get_urls_for_pattern(pattern, prefix='', namespace=None):
5454
urls = {}
5555

56+
if prefix is '':
57+
prefix = get_script_prefix()
58+
5659
if issubclass(pattern.__class__, RegexURLPattern):
5760
if settings.JS_URLS_UNNAMED:
5861
mod_name, obj_name = pattern.callback.__module__, pattern.callback.__name__
@@ -99,7 +102,7 @@ def _get_urls_for_pattern(pattern, prefix='', namespace=None):
99102
full_url = full_url.replace(el, "<>") # replace by a empty parameter name
100103
# Unescape charaters
101104
full_url = RE_ESCAPE.sub(r'\1', full_url)
102-
urls[pattern_name] = "/" + full_url
105+
urls[pattern_name] = full_url
103106
elif (CMS_APP_RESOLVER) and (issubclass(pattern.__class__, AppRegexURLResolver)): # hack for django-cms
104107
for p in pattern.url_patterns:
105108
urls.update(_get_urls_for_pattern(p, prefix=prefix, namespace=namespace))

0 commit comments

Comments
 (0)