diff --git a/zerver/lib/bugdown/__init__.py b/zerver/lib/bugdown/__init__.py index 2c9d6497eb..a0ab449311 100644 --- a/zerver/lib/bugdown/__init__.py +++ b/zerver/lib/bugdown/__init__.py @@ -166,12 +166,11 @@ def rewrite_local_links_to_relative(link: str) -> str: return link -def url_embed_preview_enabled_for_realm(message: Optional[Message]=None) -> bool: +def url_embed_preview_enabled_for_realm(message: Optional[Message]=None, + realm: Optional[Realm]=None) -> bool: if not settings.INLINE_URL_EMBED_PREVIEW: return False - realm = arguments.current_realm - if realm is None: if message is not None: realm = message.get_realm() @@ -184,12 +183,11 @@ def url_embed_preview_enabled_for_realm(message: Optional[Message]=None) -> bool return realm.inline_url_embed_preview -def image_preview_enabled_for_realm(message: Optional[Message]=None) -> bool: +def image_preview_enabled_for_realm(message: Optional[Message]=None, + realm: Optional[Realm]=None) -> bool: if not settings.INLINE_IMAGE_PREVIEW: return False - realm = arguments.current_realm - if realm is None: if message is not None: realm = message.get_realm() @@ -564,8 +562,14 @@ class InlineInterestingLinkProcessor(markdown.treeprocessors.Treeprocessor): return url + def image_preview_enabled(self) -> bool: + return image_preview_enabled_for_realm( + self.markdown.zulip_message, + self.markdown.zulip_realm, + ) + def is_image(self, url: str) -> bool: - if not image_preview_enabled_for_realm(self.markdown.zulip_message): + if not self.image_preview_enabled(): return False parsed_url = urllib.parse.urlparse(url) # List from http://support.google.com/chromeos/bin/answer.py?hl=en&answer=183093 @@ -620,7 +624,7 @@ class InlineInterestingLinkProcessor(markdown.treeprocessors.Treeprocessor): return None def youtube_id(self, url: str) -> Optional[str]: - if not image_preview_enabled_for_realm(): + if not self.image_preview_enabled(): return None # Youtube video id extraction regular expression from http://pastebin.com/KyKAFv1s # If it matches, match.group(2) is the video id. @@ -640,7 +644,7 @@ class InlineInterestingLinkProcessor(markdown.treeprocessors.Treeprocessor): return None def vimeo_id(self, url: str) -> Optional[str]: - if not image_preview_enabled_for_realm(): + if not self.image_preview_enabled(): return None #(http|https)?:\/\/(www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|)(\d+)(?:|\/\?) # If it matches, match.group('id') is the video id. @@ -971,7 +975,8 @@ class InlineInterestingLinkProcessor(markdown.treeprocessors.Treeprocessor): if arguments.db_data and arguments.db_data['sent_by_bot']: continue - if not url_embed_preview_enabled_for_realm(self.markdown.zulip_message): + if not url_embed_preview_enabled_for_realm(self.markdown.zulip_message, + self.markdown.zulip_realm): continue try: @@ -2022,7 +2027,7 @@ def do_convert(content: str, # Filters such as UserMentionPattern need a message. _md_engine.zulip_message = message - arguments.current_realm = message_realm + _md_engine.zulip_realm = message_realm # Pre-fetch data from the DB that is used in the bugdown thread if message is not None: @@ -2088,7 +2093,7 @@ def do_convert(content: str, raise BugdownRenderingException() finally: _md_engine.zulip_message = None - arguments.current_realm = None + _md_engine.zulip_realm = None arguments.db_data = None bugdown_time_start = 0.0 diff --git a/zerver/lib/bugdown/arguments.py b/zerver/lib/bugdown/arguments.py index 77c8f8ba9d..6a6dbdb69d 100644 --- a/zerver/lib/bugdown/arguments.py +++ b/zerver/lib/bugdown/arguments.py @@ -1,9 +1,5 @@ from typing import Any, Dict, Optional -from zerver.models import Message, Realm - -current_realm = None # type: Optional[Realm] - # We avoid doing DB queries in our markdown thread to avoid the overhead of # opening a new DB connection. These connections tend to live longer than the # threads themselves, as well. diff --git a/zerver/tests/test_bugdown.py b/zerver/tests/test_bugdown.py index 34f73035df..c51f4c95d8 100644 --- a/zerver/tests/test_bugdown.py +++ b/zerver/tests/test_bugdown.py @@ -448,7 +448,6 @@ class BugdownTest(ZulipTestCase): sender_user_profile = self.example_user('othello') message = Message(sender=sender_user_profile, sending_client=get_client("test")) realm = message.get_realm() - arguments.current_realm = realm ret = bugdown.image_preview_enabled_for_realm() self.assertEqual(ret, realm.inline_image_preview) @@ -461,7 +460,6 @@ class BugdownTest(ZulipTestCase): sender_user_profile = self.example_user('othello') message = copy.deepcopy(Message(sender=sender_user_profile, sending_client=get_client("test"))) realm = message.get_realm() - arguments.current_realm = realm ret = bugdown.url_embed_preview_enabled_for_realm() self.assertEqual(ret, False)