0001-misc-use-full-URLs-for-href-src-attributes-in-404-sk.patch
combo/data/models.py | ||
---|---|---|
1046 | 1046 |
def get_cell_extra_context(self, context): |
1047 | 1047 |
extra_context = super(TextCell, self).get_cell_extra_context(context) |
1048 | 1048 |
text = self.text or '' |
1049 |
render_skeleton = context.get('render_skeleton')
|
|
1049 |
force_absolute_url = context.get('force_absolute_url') or context.get('render_skeleton')
|
|
1050 | 1050 | |
1051 | 1051 |
def sub_variadic_url(match): |
1052 | 1052 |
attribute = match.group(1) |
... | ... | |
1059 | 1059 |
return '%s="%s"' % (attribute, url) |
1060 | 1060 |
text = re.sub(r'(href|src)="(.*?)"', sub_variadic_url, text) |
1061 | 1061 | |
1062 |
if render_skeleton:
|
|
1062 |
if force_absolute_url:
|
|
1063 | 1063 |
request = context.get('request') |
1064 | 1064 |
def sub_src(match): |
1065 | 1065 |
url = request.build_absolute_uri(match.group(1)) |
... | ... | |
1204 | 1204 |
return url |
1205 | 1205 | |
1206 | 1206 |
def get_cell_extra_context(self, context): |
1207 |
render_skeleton = context.get('render_skeleton')
|
|
1207 |
force_absolute_url = context.get('force_absolute_url') or context.get('render_skeleton')
|
|
1208 | 1208 |
request = context.get('request') |
1209 | 1209 |
extra_context = super(LinkCell, self).get_cell_extra_context(context) |
1210 | 1210 |
if self.link_page: |
... | ... | |
1212 | 1212 |
else: |
1213 | 1213 |
extra_context['title'] = self.title or self.url |
1214 | 1214 |
url = self.get_url(context) |
1215 |
if render_skeleton and not urlparse.urlparse(url).netloc:
|
|
1215 |
if force_absolute_url and not urlparse.urlparse(url).netloc:
|
|
1216 | 1216 |
# create full URL when used in a skeleton |
1217 | 1217 |
url = request.build_absolute_uri(url) |
1218 | 1218 |
extra_context['url'] = url |
combo/public/views.py | ||
---|---|---|
240 | 240 |
source = request.GET['source'] |
241 | 241 | |
242 | 242 |
if source == '404': |
243 |
request.extra_context_data = {'site_base': request.build_absolute_uri('/')[:-1]} |
|
243 |
request.extra_context_data = { |
|
244 |
'site_base': request.build_absolute_uri('/')[:-1], |
|
245 |
'force_absolute_url': True, |
|
246 |
} |
|
244 | 247 |
response = error404(request, exception=Http404()) |
245 | 248 |
response.status_code = 200 |
246 | 249 |
return response |
... | ... | |
324 | 327 |
'pages': pages, |
325 | 328 |
'request': request, |
326 | 329 |
'render_skeleton': True, |
330 |
'force_absolute_url': True, |
|
327 | 331 |
'check_badges': should_check_badges(), |
328 | 332 |
'site_base': request.build_absolute_uri('/')[:-1], |
329 | 333 |
} |
tests/test_public.py | ||
---|---|---|
366 | 366 |
resp = app.get('/__skeleton__/?source=404') |
367 | 367 |
assert "This page doesn't exist" in resp.text |
368 | 368 |
assert resp.status_code == 200 |
369 |
assert 'href="http://testserver/test/foobar"' in resp.text |
|
370 |
assert 'href="http://www.example.com/test"' in resp.text |
|
371 |
assert 'href="#top"' in resp.text |
|
372 |
assert 'href="http://testserver/plop/"' in resp.text |
|
369 | 373 | |
370 | 374 |
# do not consider empty redirection |
371 | 375 |
Page.objects.all().delete() |
372 |
- |