From 2030aaf12e43f912131ef12d5e027c54182cdc90 Mon Sep 17 00:00:00 2001 From: Martin Gross Date: Fri, 17 Apr 2020 17:53:57 +0200 Subject: [PATCH] Fix #1488 some more: compile the regex' less often for better performance --- src/pretix/base/templatetags/rich_text.py | 16 ++++++++++------ src/requirements/production.txt | 2 +- src/setup.py | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/pretix/base/templatetags/rich_text.py b/src/pretix/base/templatetags/rich_text.py index 7aebf54275..06e3c52ce6 100644 --- a/src/pretix/base/templatetags/rich_text.py +++ b/src/pretix/base/templatetags/rich_text.py @@ -65,6 +65,10 @@ ALLOWED_ATTRIBUTES = { ALLOWED_PROTOCOLS = ['http', 'https', 'mailto', 'tel'] +URL_RE = build_url_re(tlds=tld_set) + +EMAIL_RE = build_email_re(tlds=tld_set) + def safelink_callback(attrs, new=False): url = attrs.get((None, 'href'), '/') @@ -87,8 +91,8 @@ def abslink_callback(attrs, new=False): def markdown_compile_email(source): linker = bleach.Linker( - url_re=build_url_re(tlds=tld_set), - email_re=build_email_re(tlds=tld_set), + url_re=URL_RE, + email_re=EMAIL_RE, parse_email=True ) return linker.linkify(bleach.clean( @@ -129,8 +133,8 @@ def rich_text(text: str, **kwargs): """ text = str(text) linker = bleach.Linker( - url_re=build_url_re(tlds=tld_set), - email_re=build_email_re(tlds=tld_set), + url_re=URL_RE, + email_re=EMAIL_RE, callbacks=DEFAULT_CALLBACKS + ([safelink_callback] if kwargs.get('safelinks', True) else [abslink_callback]), parse_email=True ) @@ -145,8 +149,8 @@ def rich_text_snippet(text: str, **kwargs): """ text = str(text) linker = bleach.Linker( - url_re=build_url_re(tlds=tld_set), - email_re=build_email_re(tlds=tld_set), + url_re=URL_RE, + email_re=EMAIL_RE, callbacks=DEFAULT_CALLBACKS + ([safelink_callback] if kwargs.get('safelinks', True) else [abslink_callback]), parse_email=True ) diff --git a/src/requirements/production.txt b/src/requirements/production.txt index cef9e35c1a..27544cbf68 100644 --- a/src/requirements/production.txt +++ b/src/requirements/production.txt @@ -31,7 +31,7 @@ dj-static csscompressor django-markup markdown<=2.2 -bleach>=3.1.3 +bleach>=3.1.3,<3.2.0 sentry-sdk==0.14.* babel django-i18nfield>=1.7.0 diff --git a/src/setup.py b/src/setup.py index d8e2140c81..5777199add 100644 --- a/src/setup.py +++ b/src/setup.py @@ -120,7 +120,7 @@ setup( 'csscompressor', 'django-markup', 'markdown<=2.2', - 'bleach>=3.1.3', + 'bleach>=3.1.3,<3.2.0', 'sentry-sdk==0.14.*', 'babel', 'paypalrestsdk==1.13.*',