mirror of
https://github.com/pretix/pretix.git
synced 2026-05-09 15:54:03 +00:00
Fix rich_text crash on empty <a> element
This commit is contained in:
@@ -138,7 +138,7 @@ def truelink_callback(attrs, new=False):
|
|||||||
text = re.sub(r'[^a-zA-Z0-9.\-/_ ]', '', attrs.get('_text')) # clean up link text
|
text = re.sub(r'[^a-zA-Z0-9.\-/_ ]', '', attrs.get('_text')) # clean up link text
|
||||||
url = attrs.get((None, 'href'), '/')
|
url = attrs.get((None, 'href'), '/')
|
||||||
href_url = urllib.parse.urlparse(url)
|
href_url = urllib.parse.urlparse(url)
|
||||||
if URL_RE.match(text) and href_url.scheme not in ('tel', 'mailto'):
|
if (None, 'href') in attrs and URL_RE.match(text) and href_url.scheme not in ('tel', 'mailto'):
|
||||||
# link text looks like a url
|
# link text looks like a url
|
||||||
if text.startswith('//'):
|
if text.startswith('//'):
|
||||||
text = 'https:' + text
|
text = 'https:' + text
|
||||||
@@ -157,6 +157,8 @@ def abslink_callback(attrs, new=False):
|
|||||||
Makes sure that all links will be absolute links and will be opened in a new page with no
|
Makes sure that all links will be absolute links and will be opened in a new page with no
|
||||||
window.opener attribute.
|
window.opener attribute.
|
||||||
"""
|
"""
|
||||||
|
if (None, 'href') not in attrs:
|
||||||
|
return attrs
|
||||||
url = attrs.get((None, 'href'), '/')
|
url = attrs.get((None, 'href'), '/')
|
||||||
if not url.startswith('mailto:') and not url.startswith('tel:'):
|
if not url.startswith('mailto:') and not url.startswith('tel:'):
|
||||||
attrs[None, 'href'] = urllib.parse.urljoin(settings.SITE_URL, url)
|
attrs[None, 'href'] = urllib.parse.urljoin(settings.SITE_URL, url)
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ from pretix.base.templatetags.rich_text import (
|
|||||||
'<a href="https://goodsite.com.evilsite.com" rel="noopener" target="_blank">https://goodsite.com.evilsite.com</a>'),
|
'<a href="https://goodsite.com.evilsite.com" rel="noopener" target="_blank">https://goodsite.com.evilsite.com</a>'),
|
||||||
('<a href="https://evilsite.com/deep/path">evilsite.com</a>',
|
('<a href="https://evilsite.com/deep/path">evilsite.com</a>',
|
||||||
'<a href="https://evilsite.com/deep/path" rel="noopener" target="_blank">evilsite.com</a>'),
|
'<a href="https://evilsite.com/deep/path" rel="noopener" target="_blank">evilsite.com</a>'),
|
||||||
|
('<a>broken</a>', '<a>broken</a>'),
|
||||||
])
|
])
|
||||||
def test_linkify_abs(link):
|
def test_linkify_abs(link):
|
||||||
input, output = link
|
input, output = link
|
||||||
|
|||||||
Reference in New Issue
Block a user