diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index 6422813f93..5d530bd8f2 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -1751,7 +1751,7 @@ def create_stream_if_needed(realm: Realm, ) if created: - stream.rendered_description = bugdown_convert(stream.description) + stream.rendered_description = bugdown_convert(stream.description, no_previews=True) stream.save(update_fields=["rendered_description"]) Recipient.objects.create(type_id=stream.id, type=Recipient.STREAM) if stream.is_public(): @@ -3505,7 +3505,7 @@ def do_rename_stream(stream: Stream, def do_change_stream_description(stream: Stream, new_description: str) -> None: stream.description = new_description - stream.rendered_description = bugdown_convert(new_description) + stream.rendered_description = bugdown_convert(new_description, no_previews=True) stream.save(update_fields=['description', 'rendered_description']) event = dict( diff --git a/zerver/lib/bulk_create.py b/zerver/lib/bulk_create.py index a9bd7219db..c0cab4c836 100644 --- a/zerver/lib/bulk_create.py +++ b/zerver/lib/bulk_create.py @@ -80,7 +80,7 @@ def bulk_create_streams(realm: Realm, realm=realm, name=name, description=options["description"], - rendered_description=bugdown_convert(options["description"]), + rendered_description=bugdown_convert(options["description"], no_previews=True), invite_only=options.get("invite_only", False), is_announcement_only=options.get("is_announcement_only", False), history_public_to_subscribers=options["history_public_to_subscribers"], diff --git a/zerver/lib/import_realm.py b/zerver/lib/import_realm.py index 9fcb779552..f8d3c731b6 100644 --- a/zerver/lib/import_realm.py +++ b/zerver/lib/import_realm.py @@ -746,7 +746,8 @@ def do_import_realm(import_dir: Path, subdomain: str, processes: int=1) -> Realm for stream in data['zerver_stream']: if 'rendered_description' in stream: continue - stream["rendered_description"] = bugdown_convert(stream["description"]) + stream["rendered_description"] = bugdown_convert(stream["description"], + no_previews=True) bulk_import_model(data, Stream) realm.notifications_stream_id = notifications_stream_id diff --git a/zerver/migrations/0206_stream_rendered_description.py b/zerver/migrations/0206_stream_rendered_description.py index b41d75fa56..a499685320 100644 --- a/zerver/migrations/0206_stream_rendered_description.py +++ b/zerver/migrations/0206_stream_rendered_description.py @@ -12,7 +12,8 @@ def render_all_stream_descriptions(apps: StateApps, schema_editor: DatabaseSchem Stream = apps.get_model('zerver', 'Stream') all_streams = Stream.objects.exclude(description='') for stream in all_streams: - stream.rendered_description = bugdown_convert(stream.description) + stream.rendered_description = bugdown_convert(stream.description, + no_previews=True) stream.save(update_fields=["rendered_description"]) diff --git a/zerver/tests/test_subs.py b/zerver/tests/test_subs.py index 3118c655f5..de958adf7b 100644 --- a/zerver/tests/test_subs.py +++ b/zerver/tests/test_subs.py @@ -708,6 +708,16 @@ class StreamAdminTest(ZulipTestCase): stream = get_stream('stream_name1', realm) self.assertEqual(stream.description, 'a multi line description') + # Verify that we don't render inline URL previews in this code path. + with self.settings(INLINE_URL_EMBED_PREVIEW=True): + result = self.client_patch('/json/streams/%d' % (stream_id,), + {'description': ujson.dumps('See https://zulipchat.com/team')}) + self.assert_json_success(result) + stream = get_stream('stream_name1', realm) + self.assertEqual(stream.rendered_description, + '

See https://zulipchat.com/team

') + def test_change_stream_description_requires_realm_admin(self) -> None: user_profile = self.example_user('hamlet') email = user_profile.email