From db30cf470cebec697ffa508cd03a3f47fab6a1ae Mon Sep 17 00:00:00 2001 From: Udit107710 Date: Sat, 28 Mar 2020 06:46:04 +0000 Subject: [PATCH] refactor: Making email_mirror independent of actions. Moved truncate_body, truncate_content and truncate_topic to message.py. --- zerver/lib/actions.py | 16 +++------------- zerver/lib/email_mirror.py | 4 ++-- zerver/lib/message.py | 13 +++++++++++++ zerver/views/messages.py | 3 ++- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index 4950a2bb35..dc586575ea 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -45,6 +45,8 @@ from zerver.lib.message import ( MessageDict, render_markdown, update_first_visible_message_id, + truncate_body, + truncate_topic, ) from zerver.lib.realm_icon import realm_icon_url from zerver.lib.realm_logo import get_realm_logo_data @@ -95,7 +97,7 @@ from zerver.models import Realm, RealmEmoji, Stream, UserProfile, UserActivity, Subscription, Recipient, Message, Attachment, UserMessage, RealmAuditLog, \ UserHotspot, MultiuseInvite, ScheduledMessage, UserStatus, \ Client, DefaultStream, DefaultStreamGroup, UserPresence, \ - ScheduledEmail, MAX_TOPIC_NAME_LENGTH, \ + ScheduledEmail, \ MAX_MESSAGE_LENGTH, get_client, get_stream, \ get_user_profile_by_id, PreregistrationUser, \ email_to_username, \ @@ -4198,18 +4200,6 @@ def do_update_message_flags(user_profile: UserProfile, statsd.incr("flags.%s.%s" % (flag, operation), count) return count - -def truncate_content(content: str, max_length: int, truncation_message: str) -> str: - if len(content) > max_length: - content = content[:max_length - len(truncation_message)] + truncation_message - return content - -def truncate_body(body: str) -> str: - return truncate_content(body, MAX_MESSAGE_LENGTH, "\n[message truncated]") - -def truncate_topic(topic: str) -> str: - return truncate_content(topic, MAX_TOPIC_NAME_LENGTH, "...") - MessageUpdateUserInfoResult = TypedDict('MessageUpdateUserInfoResult', { 'message_user_ids': Set[int], 'mention_user_ids': Set[int], diff --git a/zerver/lib/email_mirror.py b/zerver/lib/email_mirror.py index 03f425f1ed..e3c748567f 100644 --- a/zerver/lib/email_mirror.py +++ b/zerver/lib/email_mirror.py @@ -11,8 +11,7 @@ from django.conf import settings from django.utils.timezone import timedelta, now as timezone_now from zerver.lib.actions import internal_send_private_message, \ - internal_send_stream_message, internal_send_huddle_message, \ - truncate_body, truncate_topic + internal_send_stream_message, internal_send_huddle_message from zerver.lib.email_mirror_helpers import decode_email_address, \ get_email_gateway_message_string_from_address, ZulipEmailForwardError from zerver.lib.email_notifications import convert_html_to_markdown @@ -22,6 +21,7 @@ from zerver.lib.upload import upload_message_file from zerver.lib.send_email import FromAddress from zerver.lib.rate_limiter import RateLimitedObject from zerver.lib.exceptions import RateLimited +from zerver.lib.message import truncate_body, truncate_topic from zerver.models import Stream, Recipient, MissedMessageEmailAddress, \ get_display_recipient, \ Message, Realm, UserProfile, get_system_bot, get_user, get_stream_by_id_in_realm diff --git a/zerver/lib/message.py b/zerver/lib/message.py index 2653d98c8f..aaf342f2c6 100644 --- a/zerver/lib/message.py +++ b/zerver/lib/message.py @@ -51,6 +51,8 @@ from zerver.models import ( UserMessage, Reaction, get_usermessage_by_message_id, + MAX_MESSAGE_LENGTH, + MAX_TOPIC_NAME_LENGTH ) from typing import Any, Dict, List, Optional, Set, Tuple, Sequence @@ -81,6 +83,17 @@ UnreadMessagesResult = TypedDict('UnreadMessagesResult', { # user has more older unread messages that were cut off. MAX_UNREAD_MESSAGES = 50000 +def truncate_content(content: str, max_length: int, truncation_message: str) -> str: + if len(content) > max_length: + content = content[:max_length - len(truncation_message)] + truncation_message + return content + +def truncate_body(body: str) -> str: + return truncate_content(body, MAX_MESSAGE_LENGTH, "\n[message truncated]") + +def truncate_topic(topic: str) -> str: + return truncate_content(topic, MAX_TOPIC_NAME_LENGTH, "...") + def messages_for_ids(message_ids: List[int], user_message_flags: Dict[int, List[str]], search_fields: Dict[int, Dict[str, str]], diff --git a/zerver/views/messages.py b/zerver/views/messages.py index 780d67361a..d59401cd3f 100644 --- a/zerver/views/messages.py +++ b/zerver/views/messages.py @@ -17,7 +17,7 @@ from zerver.lib.zcommand import process_zcommands from zerver.lib.actions import recipient_for_user_profiles, do_update_message_flags, \ compute_irc_user_fullname, compute_jabber_user_fullname, \ create_mirror_user_if_needed, check_send_message, do_update_message, \ - extract_private_recipients, truncate_body, render_incoming_message, do_delete_messages, \ + extract_private_recipients, render_incoming_message, do_delete_messages, \ do_mark_all_as_read, do_mark_stream_messages_as_read, extract_stream_indicator, \ get_user_info_for_message_updates, check_schedule_message from zerver.lib.addressee import get_user_profiles, get_user_profiles_by_ids @@ -27,6 +27,7 @@ from zerver.lib.message import ( messages_for_ids, render_markdown, get_first_visible_message_id, + truncate_body, ) from zerver.lib.response import json_success, json_error from zerver.lib.sqlalchemy_utils import get_sqlalchemy_connection