mirror of
https://github.com/django/django.git
synced 2024-12-23 01:25:58 +00:00
Fixed #36017 Urlizer email fixed
This commit is contained in:
parent
fcd9d08379
commit
890aaca91a
@ -8,7 +8,8 @@ from collections.abc import Mapping
|
|||||||
from html.parser import HTMLParser
|
from html.parser import HTMLParser
|
||||||
from urllib.parse import parse_qsl, quote, unquote, urlencode, urlsplit, urlunsplit
|
from urllib.parse import parse_qsl, quote, unquote, urlencode, urlsplit, urlunsplit
|
||||||
|
|
||||||
from django.core.exceptions import SuspiciousOperation
|
from django.core.exceptions import SuspiciousOperation, ValidationError
|
||||||
|
from django.core.validators import validate_email
|
||||||
from django.utils.deprecation import RemovedInDjango60Warning
|
from django.utils.deprecation import RemovedInDjango60Warning
|
||||||
from django.utils.encoding import punycode
|
from django.utils.encoding import punycode
|
||||||
from django.utils.functional import Promise, cached_property, keep_lazy, keep_lazy_text
|
from django.utils.functional import Promise, cached_property, keep_lazy, keep_lazy_text
|
||||||
@ -476,6 +477,10 @@ class Urlizer:
|
|||||||
# Dot must be in p2 (e.g. example.com)
|
# Dot must be in p2 (e.g. example.com)
|
||||||
if "." not in p2 or p2.startswith("."):
|
if "." not in p2 or p2.startswith("."):
|
||||||
return False
|
return False
|
||||||
|
try:
|
||||||
|
validate_email(value)
|
||||||
|
except ValidationError:
|
||||||
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -379,15 +379,9 @@ class TestUtilsHtml(SimpleTestCase):
|
|||||||
(
|
(
|
||||||
# RFC 6068 requires a mailto URI to percent-encode a number of
|
# RFC 6068 requires a mailto URI to percent-encode a number of
|
||||||
# characters that can appear in <addr-spec>.
|
# characters that can appear in <addr-spec>.
|
||||||
"yes;this=is&a%valid!email@example.com",
|
"yes+this=is&a%valid!email@example.com",
|
||||||
'<a href="mailto:yes%3Bthis%3Dis%26a%25valid%21email@example.com"'
|
'<a href="mailto:yes%2Bthis%3Dis%26a%25valid%21email@example.com"'
|
||||||
">yes;this=is&a%valid!email@example.com</a>",
|
">yes+this=is&a%valid!email@example.com</a>",
|
||||||
),
|
|
||||||
(
|
|
||||||
# Urlizer shouldn't urlize the "?org" part of this. But since
|
|
||||||
# it does, RFC 6068 requires percent encoding the "?".
|
|
||||||
"test@example.com?org",
|
|
||||||
'<a href="mailto:test@example.com%3Forg">test@example.com?org</a>',
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
for value, output in tests:
|
for value, output in tests:
|
||||||
@ -407,6 +401,8 @@ class TestUtilsHtml(SimpleTestCase):
|
|||||||
"foo@.example.com",
|
"foo@.example.com",
|
||||||
"foo@localhost",
|
"foo@localhost",
|
||||||
"foo@localhost.",
|
"foo@localhost.",
|
||||||
|
"test@example?;+!.com",
|
||||||
|
"email me@example.com,then I'll respond",
|
||||||
# trim_punctuation catastrophic tests
|
# trim_punctuation catastrophic tests
|
||||||
"(" * 100_000 + ":" + ")" * 100_000,
|
"(" * 100_000 + ":" + ")" * 100_000,
|
||||||
"(" * 100_000 + "&:" + ")" * 100_000,
|
"(" * 100_000 + "&:" + ")" * 100_000,
|
||||||
|
Loading…
Reference in New Issue
Block a user