utils: fix get_templated_url to work with packed contexts (#16308)
This commit is contained in:
parent
124e2e2fc2
commit
8bc7085ac0
|
@ -35,6 +35,7 @@ from requests import Response, Session as RequestsSession
|
|||
|
||||
from django.conf import settings
|
||||
from django.core.cache import cache
|
||||
from django.template import Context
|
||||
from django.utils.html import strip_tags
|
||||
from django.utils.http import urlencode, quote
|
||||
|
||||
|
@ -174,9 +175,9 @@ class UnknownTemplateVariableError(KeyError):
|
|||
pass
|
||||
|
||||
def get_templated_url(url, context=None):
|
||||
template_vars = {}
|
||||
template_vars = Context()
|
||||
if context:
|
||||
template_vars.update(context.flatten())
|
||||
template_vars.update(context)
|
||||
user = getattr(context.get('request'), 'user', None)
|
||||
if user and user.is_authenticated():
|
||||
template_vars['user_email'] = quote(user.email)
|
||||
|
|
|
@ -87,3 +87,12 @@ def test_templated_url():
|
|||
assert get_templated_url('[test_url]/[foobar]/?NameID=[user_nameid]&email=[user_email]',
|
||||
context=context) == \
|
||||
'http://www.example.net/barfoo/?NameID=r2%26d2&email=foo%3D3%40example.net'
|
||||
|
||||
# packed contexts
|
||||
request = RequestFactory().get('/')
|
||||
request.user = None
|
||||
context = Context({'request': request})
|
||||
context.update({'foo': 'bar'})
|
||||
ctx = Context()
|
||||
ctx.update(context)
|
||||
assert get_templated_url('[foo]', context=ctx) == 'bar'
|
||||
|
|
Loading…
Reference in New Issue