summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorBas Peschier <basp@fabrique.nl>2015-03-15 11:26:47 +0100
committerTim Graham <timograham@gmail.com>2015-03-18 13:03:25 -0400
commit0339844b70895d6162b4595ae615e6edf843c6cd (patch)
treeb4412df41361415c9800756e90ca117a3389fa71 /django
parent6bff3439894ac22d80f270f36513fc86586273f3 (diff)
Fixed #24476 -- Added context manager/decorator for overriding script prefix.
Tests were using an undocumented keyword argument for easily overriding script prefix while reversing. This is now changed into a test utility which can be used as decorator or context manager.
Diffstat (limited to 'django')
-rw-r--r--django/core/urlresolvers.py5
-rw-r--r--django/test/utils.py21
2 files changed, 23 insertions, 3 deletions
diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py
index cf42768add..563d4a7ade 100644
--- a/django/core/urlresolvers.py
+++ b/django/core/urlresolvers.py
@@ -527,15 +527,14 @@ def resolve(path, urlconf=None):
return get_resolver(urlconf).resolve(path)
-def reverse(viewname, urlconf=None, args=None, kwargs=None, prefix=None, current_app=None):
+def reverse(viewname, urlconf=None, args=None, kwargs=None, current_app=None):
if urlconf is None:
urlconf = get_urlconf()
resolver = get_resolver(urlconf)
args = args or []
kwargs = kwargs or {}
- if prefix is None:
- prefix = get_script_prefix()
+ prefix = get_script_prefix()
if not isinstance(viewname, six.string_types):
view = viewname
diff --git a/django/test/utils.py b/django/test/utils.py
index 5224bcfb71..0101919d11 100644
--- a/django/test/utils.py
+++ b/django/test/utils.py
@@ -12,11 +12,13 @@ from django.apps import apps
from django.conf import UserSettingsHolder, settings
from django.core import mail
from django.core.signals import request_started
+from django.core.urlresolvers import get_script_prefix, set_script_prefix
from django.db import reset_queries
from django.http import request
from django.template import Template
from django.test.signals import setting_changed, template_rendered
from django.utils import six
+from django.utils.decorators import ContextDecorator
from django.utils.encoding import force_str
from django.utils.translation import deactivate
@@ -595,3 +597,22 @@ def require_jinja2(test_func):
'OPTIONS': {'keep_trailing_newline': True},
}])(test_func)
return test_func
+
+
+class ScriptPrefix(ContextDecorator):
+ def __enter__(self):
+ set_script_prefix(self.prefix)
+
+ def __exit__(self, exc_type, exc_val, traceback):
+ set_script_prefix(self.old_prefix)
+
+ def __init__(self, prefix):
+ self.prefix = prefix
+ self.old_prefix = get_script_prefix()
+
+
+def override_script_prefix(prefix):
+ """
+ Decorator or context manager to temporary override the script prefix.
+ """
+ return ScriptPrefix(prefix)