misc: use full URLs for href/src attributes in 404 skeleton pages (#45895)
This commit is contained in:
parent
1aa02b0fb4
commit
e38254d47d
|
@ -1056,7 +1056,7 @@ class TextCell(CellBase):
|
|||
def get_cell_extra_context(self, context):
|
||||
extra_context = super(TextCell, self).get_cell_extra_context(context)
|
||||
text = self.text or ''
|
||||
render_skeleton = context.get('render_skeleton')
|
||||
force_absolute_url = context.get('force_absolute_url') or context.get('render_skeleton')
|
||||
|
||||
def sub_variadic_url(match):
|
||||
attribute = match.group(1)
|
||||
|
@ -1069,7 +1069,7 @@ class TextCell(CellBase):
|
|||
return '%s="%s"' % (attribute, url)
|
||||
text = re.sub(r'(href|src)="(.*?)"', sub_variadic_url, text)
|
||||
|
||||
if render_skeleton:
|
||||
if force_absolute_url:
|
||||
request = context.get('request')
|
||||
def sub_src(match):
|
||||
url = request.build_absolute_uri(match.group(1))
|
||||
|
@ -1214,7 +1214,7 @@ class LinkCell(CellBase):
|
|||
return url
|
||||
|
||||
def get_cell_extra_context(self, context):
|
||||
render_skeleton = context.get('render_skeleton')
|
||||
force_absolute_url = context.get('force_absolute_url') or context.get('render_skeleton')
|
||||
request = context.get('request')
|
||||
extra_context = super(LinkCell, self).get_cell_extra_context(context)
|
||||
if self.link_page:
|
||||
|
@ -1222,7 +1222,7 @@ class LinkCell(CellBase):
|
|||
else:
|
||||
extra_context['title'] = self.title or self.url
|
||||
url = self.get_url(context)
|
||||
if render_skeleton and not urlparse.urlparse(url).netloc:
|
||||
if force_absolute_url and not urlparse.urlparse(url).netloc:
|
||||
# create full URL when used in a skeleton
|
||||
url = request.build_absolute_uri(url)
|
||||
extra_context['url'] = url
|
||||
|
|
|
@ -240,7 +240,10 @@ def skeleton(request):
|
|||
source = request.GET['source']
|
||||
|
||||
if source == '404':
|
||||
request.extra_context_data = {'site_base': request.build_absolute_uri('/')[:-1]}
|
||||
request.extra_context_data = {
|
||||
'site_base': request.build_absolute_uri('/')[:-1],
|
||||
'force_absolute_url': True,
|
||||
}
|
||||
response = error404(request, exception=Http404())
|
||||
response.status_code = 200
|
||||
return response
|
||||
|
@ -324,6 +327,7 @@ def skeleton(request):
|
|||
'pages': pages,
|
||||
'request': request,
|
||||
'render_skeleton': True,
|
||||
'force_absolute_url': True,
|
||||
'check_badges': should_check_badges(),
|
||||
'site_base': request.build_absolute_uri('/')[:-1],
|
||||
}
|
||||
|
|
|
@ -366,6 +366,10 @@ def test_page_skeleton(app):
|
|||
resp = app.get('/__skeleton__/?source=404')
|
||||
assert "This page doesn't exist" in resp.text
|
||||
assert resp.status_code == 200
|
||||
assert 'href="http://testserver/test/foobar"' in resp.text
|
||||
assert 'href="http://www.example.com/test"' in resp.text
|
||||
assert 'href="#top"' in resp.text
|
||||
assert 'href="http://testserver/plop/"' in resp.text
|
||||
|
||||
# do not consider empty redirection
|
||||
Page.objects.all().delete()
|
||||
|
|
Loading…
Reference in New Issue