refactor: Making email_mirror independent of actions.

Moved truncate_body, truncate_content and truncate_topic
to message.py.
This commit is contained in:
Udit107710
2020-03-28 06:46:04 +00:00
committed by Tim Abbott
parent 16218d6de3
commit db30cf470c
4 changed files with 20 additions and 16 deletions

View File

@@ -45,6 +45,8 @@ from zerver.lib.message import (
MessageDict, MessageDict,
render_markdown, render_markdown,
update_first_visible_message_id, update_first_visible_message_id,
truncate_body,
truncate_topic,
) )
from zerver.lib.realm_icon import realm_icon_url from zerver.lib.realm_icon import realm_icon_url
from zerver.lib.realm_logo import get_realm_logo_data 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, \ Subscription, Recipient, Message, Attachment, UserMessage, RealmAuditLog, \
UserHotspot, MultiuseInvite, ScheduledMessage, UserStatus, \ UserHotspot, MultiuseInvite, ScheduledMessage, UserStatus, \
Client, DefaultStream, DefaultStreamGroup, UserPresence, \ Client, DefaultStream, DefaultStreamGroup, UserPresence, \
ScheduledEmail, MAX_TOPIC_NAME_LENGTH, \ ScheduledEmail, \
MAX_MESSAGE_LENGTH, get_client, get_stream, \ MAX_MESSAGE_LENGTH, get_client, get_stream, \
get_user_profile_by_id, PreregistrationUser, \ get_user_profile_by_id, PreregistrationUser, \
email_to_username, \ email_to_username, \
@@ -4198,18 +4200,6 @@ def do_update_message_flags(user_profile: UserProfile,
statsd.incr("flags.%s.%s" % (flag, operation), count) statsd.incr("flags.%s.%s" % (flag, operation), count)
return 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', { MessageUpdateUserInfoResult = TypedDict('MessageUpdateUserInfoResult', {
'message_user_ids': Set[int], 'message_user_ids': Set[int],
'mention_user_ids': Set[int], 'mention_user_ids': Set[int],

View File

@@ -11,8 +11,7 @@ from django.conf import settings
from django.utils.timezone import timedelta, now as timezone_now from django.utils.timezone import timedelta, now as timezone_now
from zerver.lib.actions import internal_send_private_message, \ from zerver.lib.actions import internal_send_private_message, \
internal_send_stream_message, internal_send_huddle_message, \ internal_send_stream_message, internal_send_huddle_message
truncate_body, truncate_topic
from zerver.lib.email_mirror_helpers import decode_email_address, \ from zerver.lib.email_mirror_helpers import decode_email_address, \
get_email_gateway_message_string_from_address, ZulipEmailForwardError get_email_gateway_message_string_from_address, ZulipEmailForwardError
from zerver.lib.email_notifications import convert_html_to_markdown 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.send_email import FromAddress
from zerver.lib.rate_limiter import RateLimitedObject from zerver.lib.rate_limiter import RateLimitedObject
from zerver.lib.exceptions import RateLimited from zerver.lib.exceptions import RateLimited
from zerver.lib.message import truncate_body, truncate_topic
from zerver.models import Stream, Recipient, MissedMessageEmailAddress, \ from zerver.models import Stream, Recipient, MissedMessageEmailAddress, \
get_display_recipient, \ get_display_recipient, \
Message, Realm, UserProfile, get_system_bot, get_user, get_stream_by_id_in_realm Message, Realm, UserProfile, get_system_bot, get_user, get_stream_by_id_in_realm

View File

@@ -51,6 +51,8 @@ from zerver.models import (
UserMessage, UserMessage,
Reaction, Reaction,
get_usermessage_by_message_id, get_usermessage_by_message_id,
MAX_MESSAGE_LENGTH,
MAX_TOPIC_NAME_LENGTH
) )
from typing import Any, Dict, List, Optional, Set, Tuple, Sequence 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. # user has more older unread messages that were cut off.
MAX_UNREAD_MESSAGES = 50000 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], def messages_for_ids(message_ids: List[int],
user_message_flags: Dict[int, List[str]], user_message_flags: Dict[int, List[str]],
search_fields: Dict[int, Dict[str, str]], search_fields: Dict[int, Dict[str, str]],

View File

@@ -17,7 +17,7 @@ from zerver.lib.zcommand import process_zcommands
from zerver.lib.actions import recipient_for_user_profiles, do_update_message_flags, \ from zerver.lib.actions import recipient_for_user_profiles, do_update_message_flags, \
compute_irc_user_fullname, compute_jabber_user_fullname, \ compute_irc_user_fullname, compute_jabber_user_fullname, \
create_mirror_user_if_needed, check_send_message, do_update_message, \ 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, \ do_mark_all_as_read, do_mark_stream_messages_as_read, extract_stream_indicator, \
get_user_info_for_message_updates, check_schedule_message get_user_info_for_message_updates, check_schedule_message
from zerver.lib.addressee import get_user_profiles, get_user_profiles_by_ids 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, messages_for_ids,
render_markdown, render_markdown,
get_first_visible_message_id, get_first_visible_message_id,
truncate_body,
) )
from zerver.lib.response import json_success, json_error from zerver.lib.response import json_success, json_error
from zerver.lib.sqlalchemy_utils import get_sqlalchemy_connection from zerver.lib.sqlalchemy_utils import get_sqlalchemy_connection