mirror of
https://github.com/zulip/zulip.git
synced 2025-11-10 00:46:03 +00:00
refactor: Update some uses of "filter" to "linkifier".
This updates some comments and local variables which could be changed without breaking other stuff.
This commit is contained in:
committed by
Tim Abbott
parent
a49dc67d8e
commit
f896a7667f
@@ -50,7 +50,7 @@ async function test_invalid_linkifier_pattern(page: Page): Promise<void> {
|
|||||||
await page.waitForSelector("div#admin-linkifier-pattern-status", {visible: true});
|
await page.waitForSelector("div#admin-linkifier-pattern-status", {visible: true});
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
await common.get_text_from_selector(page, "div#admin-linkifier-pattern-status"),
|
await common.get_text_from_selector(page, "div#admin-linkifier-pattern-status"),
|
||||||
"Failed: Invalid filter pattern. Valid characters are [ a-zA-Z_#=/:+!-].",
|
"Failed: Invalid linkifier pattern. Valid characters are [ a-zA-Z_#=/:+!-].",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6505,12 +6505,12 @@ def notify_realm_filters(realm: Realm) -> None:
|
|||||||
def do_add_realm_filter(realm: Realm, pattern: str, url_format_string: str) -> int:
|
def do_add_realm_filter(realm: Realm, pattern: str, url_format_string: str) -> int:
|
||||||
pattern = pattern.strip()
|
pattern = pattern.strip()
|
||||||
url_format_string = url_format_string.strip()
|
url_format_string = url_format_string.strip()
|
||||||
realm_filter = RealmFilter(realm=realm, pattern=pattern, url_format_string=url_format_string)
|
linkifier = RealmFilter(realm=realm, pattern=pattern, url_format_string=url_format_string)
|
||||||
realm_filter.full_clean()
|
linkifier.full_clean()
|
||||||
realm_filter.save()
|
linkifier.save()
|
||||||
notify_realm_filters(realm)
|
notify_realm_filters(realm)
|
||||||
|
|
||||||
return realm_filter.id
|
return linkifier.id
|
||||||
|
|
||||||
|
|
||||||
def do_remove_realm_filter(
|
def do_remove_realm_filter(
|
||||||
|
|||||||
@@ -1781,7 +1781,7 @@ OUTER_CAPTURE_GROUP = "linkifier_actual_match"
|
|||||||
|
|
||||||
|
|
||||||
def prepare_realm_pattern(source: str) -> str:
|
def prepare_realm_pattern(source: str) -> str:
|
||||||
"""Augment a realm filter so it only matches after start-of-string,
|
"""Augment a linkifier so it only matches after start-of-string,
|
||||||
whitespace, or opening delimiters, won't match if there are word
|
whitespace, or opening delimiters, won't match if there are word
|
||||||
characters directly after, and saves what was matched as
|
characters directly after, and saves what was matched as
|
||||||
OUTER_CAPTURE_GROUP."""
|
OUTER_CAPTURE_GROUP."""
|
||||||
@@ -2059,7 +2059,7 @@ class LinkInlineProcessor(markdown.inlinepatterns.LinkInlineProcessor):
|
|||||||
if not el.text or not el.text.strip():
|
if not el.text or not el.text.strip():
|
||||||
el.text = href
|
el.text = href
|
||||||
|
|
||||||
# Prevent realm_filters from running on the content of a Markdown link, breaking up the link.
|
# Prevent linkifiers from running on the content of a Markdown link, breaking up the link.
|
||||||
# This is a monkey-patch, but it might be worth sending a version of this change upstream.
|
# This is a monkey-patch, but it might be worth sending a version of this change upstream.
|
||||||
el.text = markdown.util.AtomicString(el.text)
|
el.text = markdown.util.AtomicString(el.text)
|
||||||
|
|
||||||
@@ -2633,7 +2633,7 @@ def do_convert(
|
|||||||
# Spend at most 5 seconds rendering; this protects the backend
|
# Spend at most 5 seconds rendering; this protects the backend
|
||||||
# from being overloaded by bugs (e.g. Markdown logic that is
|
# from being overloaded by bugs (e.g. Markdown logic that is
|
||||||
# extremely inefficient in corner cases) as well as user
|
# extremely inefficient in corner cases) as well as user
|
||||||
# errors (e.g. a realm filter that makes some syntax
|
# errors (e.g. a linkifier that makes some syntax
|
||||||
# infinite-loop).
|
# infinite-loop).
|
||||||
rendered_content = timeout(5, lambda: _md_engine.convert(content))
|
rendered_content = timeout(5, lambda: _md_engine.convert(content))
|
||||||
|
|
||||||
|
|||||||
@@ -849,7 +849,7 @@ post_delete.connect(flush_realm_emoji, sender=RealmEmoji)
|
|||||||
|
|
||||||
def filter_pattern_validator(value: str) -> None:
|
def filter_pattern_validator(value: str) -> None:
|
||||||
regex = re.compile(r"^(?:(?:[\w\-#_= /:]*|[+]|[!])(\(\?P<\w+>.+\)))+$")
|
regex = re.compile(r"^(?:(?:[\w\-#_= /:]*|[+]|[!])(\(\?P<\w+>.+\)))+$")
|
||||||
error_msg = _("Invalid filter pattern. Valid characters are {}.").format(
|
error_msg = _("Invalid linkifier pattern. Valid characters are {}.").format(
|
||||||
"[ a-zA-Z_#=/:+!-]",
|
"[ a-zA-Z_#=/:+!-]",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1257,12 +1257,12 @@ class MarkdownTest(ZulipTestCase):
|
|||||||
def test_realm_patterns(self) -> None:
|
def test_realm_patterns(self) -> None:
|
||||||
realm = get_realm("zulip")
|
realm = get_realm("zulip")
|
||||||
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
||||||
realm_filter = RealmFilter(
|
linkifier = RealmFilter(
|
||||||
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
||||||
)
|
)
|
||||||
realm_filter.save()
|
linkifier.save()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
realm_filter.__str__(),
|
linkifier.__str__(),
|
||||||
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1368,27 +1368,27 @@ class MarkdownTest(ZulipTestCase):
|
|||||||
def test_multiple_matching_realm_patterns(self) -> None:
|
def test_multiple_matching_realm_patterns(self) -> None:
|
||||||
realm = get_realm("zulip")
|
realm = get_realm("zulip")
|
||||||
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
||||||
realm_filter_1 = RealmFilter(
|
linkifier_1 = RealmFilter(
|
||||||
realm=realm,
|
realm=realm,
|
||||||
pattern=r"(?P<id>ABC\-[0-9]+)(?![A-Z0-9-])",
|
pattern=r"(?P<id>ABC\-[0-9]+)(?![A-Z0-9-])",
|
||||||
url_format_string=url_format_string,
|
url_format_string=url_format_string,
|
||||||
)
|
)
|
||||||
realm_filter_1.save()
|
linkifier_1.save()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
realm_filter_1.__str__(),
|
linkifier_1.__str__(),
|
||||||
r"<RealmFilter(zulip): (?P<id>ABC\-[0-9]+)(?![A-Z0-9-])"
|
r"<RealmFilter(zulip): (?P<id>ABC\-[0-9]+)(?![A-Z0-9-])"
|
||||||
" https://trac.example.com/ticket/%(id)s>",
|
" https://trac.example.com/ticket/%(id)s>",
|
||||||
)
|
)
|
||||||
|
|
||||||
url_format_string = r"https://other-trac.example.com/ticket/%(id)s"
|
url_format_string = r"https://other-trac.example.com/ticket/%(id)s"
|
||||||
realm_filter_2 = RealmFilter(
|
linkifier_2 = RealmFilter(
|
||||||
realm=realm,
|
realm=realm,
|
||||||
pattern=r"(?P<id>[A-Z][A-Z0-9]*\-[0-9]+)(?![A-Z0-9-])",
|
pattern=r"(?P<id>[A-Z][A-Z0-9]*\-[0-9]+)(?![A-Z0-9-])",
|
||||||
url_format_string=url_format_string,
|
url_format_string=url_format_string,
|
||||||
)
|
)
|
||||||
realm_filter_2.save()
|
linkifier_2.save()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
realm_filter_2.__str__(),
|
linkifier_2.__str__(),
|
||||||
r"<RealmFilter(zulip): (?P<id>[A-Z][A-Z0-9]*\-[0-9]+)(?![A-Z0-9-])"
|
r"<RealmFilter(zulip): (?P<id>[A-Z][A-Z0-9]*\-[0-9]+)(?![A-Z0-9-])"
|
||||||
" https://other-trac.example.com/ticket/%(id)s>",
|
" https://other-trac.example.com/ticket/%(id)s>",
|
||||||
)
|
)
|
||||||
@@ -1404,8 +1404,8 @@ class MarkdownTest(ZulipTestCase):
|
|||||||
converted = markdown_convert(content, message_realm=realm, message=msg)
|
converted = markdown_convert(content, message_realm=realm, message=msg)
|
||||||
converted_topic = topic_links(realm.id, msg.topic_name())
|
converted_topic = topic_links(realm.id, msg.topic_name())
|
||||||
|
|
||||||
# The second filter (which was saved later) was ignored as the content was marked AtomicString after first conversion.
|
# The second linkifier (which was saved later) was ignored as the content was marked AtomicString after first conversion.
|
||||||
# There was no easy way to support parsing both filters and not run into an infinite loop, hence the second filter is ignored.
|
# There was no easy way to support parsing both linkifiers and not run into an infinite loop, hence the second linkifier is ignored.
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
converted,
|
converted,
|
||||||
'<p>We should fix <a href="https://trac.example.com/ticket/ABC-123">ABC-123</a> or <a href="https://trac.example.com/ticket/16">trac ABC-123</a> today.</p>',
|
'<p>We should fix <a href="https://trac.example.com/ticket/ABC-123">ABC-123</a> or <a href="https://trac.example.com/ticket/16">trac ABC-123</a> today.</p>',
|
||||||
@@ -1422,10 +1422,10 @@ class MarkdownTest(ZulipTestCase):
|
|||||||
def test_maybe_update_markdown_engines(self) -> None:
|
def test_maybe_update_markdown_engines(self) -> None:
|
||||||
realm = get_realm("zulip")
|
realm = get_realm("zulip")
|
||||||
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
||||||
realm_filter = RealmFilter(
|
linkifier = RealmFilter(
|
||||||
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
||||||
)
|
)
|
||||||
realm_filter.save()
|
linkifier.save()
|
||||||
|
|
||||||
import zerver.lib.markdown
|
import zerver.lib.markdown
|
||||||
|
|
||||||
@@ -1436,10 +1436,10 @@ class MarkdownTest(ZulipTestCase):
|
|||||||
self.assertEqual(len(zulip_filters), 1)
|
self.assertEqual(len(zulip_filters), 1)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
zulip_filters[0],
|
zulip_filters[0],
|
||||||
("#(?P<id>[0-9]{2,8})", "https://trac.example.com/ticket/%(id)s", realm_filter.id),
|
("#(?P<id>[0-9]{2,8})", "https://trac.example.com/ticket/%(id)s", linkifier.id),
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_flush_realm_filter(self) -> None:
|
def test_flush_linkifier(self) -> None:
|
||||||
realm = get_realm("zulip")
|
realm = get_realm("zulip")
|
||||||
|
|
||||||
def flush() -> None:
|
def flush() -> None:
|
||||||
@@ -2083,12 +2083,12 @@ class MarkdownTest(ZulipTestCase):
|
|||||||
msg = Message(sender=sender_user_profile, sending_client=get_client("test"))
|
msg = Message(sender=sender_user_profile, sending_client=get_client("test"))
|
||||||
# Create a linkifier.
|
# Create a linkifier.
|
||||||
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
||||||
realm_filter = RealmFilter(
|
linkifier = RealmFilter(
|
||||||
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
||||||
)
|
)
|
||||||
realm_filter.save()
|
linkifier.save()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
realm_filter.__str__(),
|
linkifier.__str__(),
|
||||||
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
||||||
)
|
)
|
||||||
# Create a user that potentially interferes with the pattern.
|
# Create a user that potentially interferes with the pattern.
|
||||||
@@ -2167,12 +2167,12 @@ class MarkdownTest(ZulipTestCase):
|
|||||||
user_profile = self.example_user("hamlet")
|
user_profile = self.example_user("hamlet")
|
||||||
# Create a linkifier.
|
# Create a linkifier.
|
||||||
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
||||||
realm_filter = RealmFilter(
|
linkifier = RealmFilter(
|
||||||
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
||||||
)
|
)
|
||||||
realm_filter.save()
|
linkifier.save()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
realm_filter.__str__(),
|
linkifier.__str__(),
|
||||||
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
||||||
)
|
)
|
||||||
# Create a user-group that potentially interferes with the pattern.
|
# Create a user-group that potentially interferes with the pattern.
|
||||||
@@ -2361,12 +2361,12 @@ class MarkdownTest(ZulipTestCase):
|
|||||||
# Create a linkifier.
|
# Create a linkifier.
|
||||||
sender_user_profile = self.example_user("othello")
|
sender_user_profile = self.example_user("othello")
|
||||||
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
||||||
realm_filter = RealmFilter(
|
linkifier = RealmFilter(
|
||||||
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
||||||
)
|
)
|
||||||
realm_filter.save()
|
linkifier.save()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
realm_filter.__str__(),
|
linkifier.__str__(),
|
||||||
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
||||||
)
|
)
|
||||||
# Create a topic link that potentially interferes with the pattern.
|
# Create a topic link that potentially interferes with the pattern.
|
||||||
@@ -2430,12 +2430,12 @@ class MarkdownTest(ZulipTestCase):
|
|||||||
# Create a linkifier.
|
# Create a linkifier.
|
||||||
sender_user_profile = self.example_user("othello")
|
sender_user_profile = self.example_user("othello")
|
||||||
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
url_format_string = r"https://trac.example.com/ticket/%(id)s"
|
||||||
realm_filter = RealmFilter(
|
linkifier = RealmFilter(
|
||||||
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
realm=realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
||||||
)
|
)
|
||||||
realm_filter.save()
|
linkifier.save()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
realm_filter.__str__(),
|
linkifier.__str__(),
|
||||||
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
||||||
)
|
)
|
||||||
# Create a stream that potentially interferes with the pattern.
|
# Create a stream that potentially interferes with the pattern.
|
||||||
|
|||||||
@@ -249,11 +249,11 @@ class MessageDictTest(ZulipTestCase):
|
|||||||
links = {"url": "https://trac.example.com/ticket/123", "text": "#123"}
|
links = {"url": "https://trac.example.com/ticket/123", "text": "#123"}
|
||||||
topic_name = "test #123"
|
topic_name = "test #123"
|
||||||
|
|
||||||
realm_filter = RealmFilter(
|
linkifier = RealmFilter(
|
||||||
realm=zulip_realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
realm=zulip_realm, pattern=r"#(?P<id>[0-9]{2,8})", url_format_string=url_format_string
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
realm_filter.__str__(),
|
linkifier.__str__(),
|
||||||
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
"<RealmFilter(zulip): #(?P<id>[0-9]{2,8}) https://trac.example.com/ticket/%(id)s>",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -271,7 +271,7 @@ class MessageDictTest(ZulipTestCase):
|
|||||||
assert_topic_links([], get_message(self.example_user("othello")))
|
assert_topic_links([], get_message(self.example_user("othello")))
|
||||||
assert_topic_links([], get_message(self.lear_user("cordelia")))
|
assert_topic_links([], get_message(self.lear_user("cordelia")))
|
||||||
assert_topic_links([], get_message(self.notification_bot()))
|
assert_topic_links([], get_message(self.notification_bot()))
|
||||||
realm_filter.save()
|
linkifier.save()
|
||||||
assert_topic_links([links], get_message(self.example_user("othello")))
|
assert_topic_links([links], get_message(self.example_user("othello")))
|
||||||
assert_topic_links([links], get_message(self.lear_user("cordelia")))
|
assert_topic_links([links], get_message(self.lear_user("cordelia")))
|
||||||
assert_topic_links([links], get_message(self.notification_bot()))
|
assert_topic_links([links], get_message(self.notification_bot()))
|
||||||
|
|||||||
@@ -24,13 +24,13 @@ class RealmFilterTest(ZulipTestCase):
|
|||||||
data["pattern"] = "$a"
|
data["pattern"] = "$a"
|
||||||
result = self.client_post("/json/realm/filters", info=data)
|
result = self.client_post("/json/realm/filters", info=data)
|
||||||
self.assert_json_error(
|
self.assert_json_error(
|
||||||
result, "Invalid filter pattern. Valid characters are [ a-zA-Z_#=/:+!-]."
|
result, "Invalid linkifier pattern. Valid characters are [ a-zA-Z_#=/:+!-]."
|
||||||
)
|
)
|
||||||
|
|
||||||
data["pattern"] = r"ZUL-(?P<id>\d++)"
|
data["pattern"] = r"ZUL-(?P<id>\d++)"
|
||||||
result = self.client_post("/json/realm/filters", info=data)
|
result = self.client_post("/json/realm/filters", info=data)
|
||||||
self.assert_json_error(
|
self.assert_json_error(
|
||||||
result, "Invalid filter pattern. Valid characters are [ a-zA-Z_#=/:+!-]."
|
result, "Invalid linkifier pattern. Valid characters are [ a-zA-Z_#=/:+!-]."
|
||||||
)
|
)
|
||||||
|
|
||||||
data["pattern"] = r"ZUL-(?P<id>\d+)"
|
data["pattern"] = r"ZUL-(?P<id>\d+)"
|
||||||
|
|||||||
Reference in New Issue
Block a user