stream-descriptions: Create wrapper for rendering stream descriptions.

In commit de65a04 we can see that if the need ever arises to modify
how stream descriptions are rendered, we would need to make changes
at 5 different call points which can be quite cumbersome. So this
functionality has been extracted to a new method called
'render_stream_descriptions'.
This commit is contained in:
Hemanth V. Alluri
2019-03-01 13:40:40 +05:30
committed by Tim Abbott
parent e0c6136ce1
commit ae126c452b
4 changed files with 14 additions and 12 deletions

View File

@@ -18,7 +18,7 @@ from analytics.lib.counts import COUNT_STATS, do_increment_logging_stat, \
from zerver.lib.bugdown import (
version as bugdown_version,
url_embed_preview_enabled,
convert as bugdown_convert
convert as bugdown_convert,
)
from zerver.lib.addressee import Addressee
from zerver.lib.bot_config import (
@@ -1726,6 +1726,9 @@ def get_default_value_for_history_public_to_subscribers(
return history_public_to_subscribers
def render_stream_description(text: str) -> str:
return bugdown_convert(text, no_previews=True)
def create_stream_if_needed(realm: Realm,
stream_name: str,
*,
@@ -1751,7 +1754,7 @@ def create_stream_if_needed(realm: Realm,
)
if created:
stream.rendered_description = bugdown_convert(stream.description, no_previews=True)
stream.rendered_description = render_stream_description(stream_description)
stream.save(update_fields=["rendered_description"])
Recipient.objects.create(type_id=stream.id, type=Recipient.STREAM)
if stream.is_public():
@@ -3499,7 +3502,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, no_previews=True)
stream.rendered_description = render_stream_description(new_description)
stream.save(update_fields=['description', 'rendered_description'])
event = dict(
@@ -5337,7 +5340,7 @@ def do_update_user_custom_profile_data(user_profile: UserProfile,
field_id=field['id'])
field_value.value = field['value']
if field_value.field.is_renderable():
field_value.rendered_value = bugdown_convert(str(field['value']))
field_value.rendered_value = render_stream_description(str(field['value']))
field_value.save(update_fields=['value', 'rendered_value'])
else:
field_value.save(update_fields=['value'])

View File

@@ -4,7 +4,6 @@ from zerver.lib.initial_password import initial_password
from zerver.models import Realm, Stream, UserProfile, \
Subscription, Recipient, RealmAuditLog
from zerver.lib.create_user import create_user_profile
from zerver.lib.bugdown import convert as bugdown_convert
def bulk_create_users(realm: Realm,
users_raw: Set[Tuple[str, str, str, bool]],
@@ -75,12 +74,13 @@ def bulk_create_streams(realm: Realm,
options['history_public_to_subscribers'] = (
not options.get("invite_only", False) and not realm.is_zephyr_mirror_realm)
if name.lower() not in existing_streams:
from zerver.lib.actions import render_stream_description
streams_to_create.append(
Stream(
realm=realm,
name=name,
description=options["description"],
rendered_description=bugdown_convert(options["description"], no_previews=True),
rendered_description=render_stream_description(options["description"]),
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"],

View File

@@ -22,7 +22,8 @@ from zerver.lib.timestamp import datetime_to_timestamp
from zerver.lib.export import DATE_FIELDS, \
Record, TableData, TableName, Field, Path
from zerver.lib.message import do_render_markdown
from zerver.lib.bugdown import version as bugdown_version, convert as bugdown_convert
from zerver.lib.bugdown import version as bugdown_version
from zerver.lib.actions import render_stream_description
from zerver.lib.upload import random_name, sanitize_name, \
guess_type, BadImageError
from zerver.lib.utils import generate_api_key, process_list_in_batches
@@ -746,8 +747,7 @@ 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"],
no_previews=True)
stream["rendered_description"] = render_stream_description(stream["description"])
bulk_import_model(data, Stream)
realm.notifications_stream_id = notifications_stream_id