From 66fe724c8a3f9fbf8871f9382b2a3144bc7ce7ac Mon Sep 17 00:00:00 2001 From: Vishnu KS Date: Fri, 31 Jan 2020 17:25:47 +0530 Subject: [PATCH] emails: Show proper message when email content is not shown. --- templates/zerver/emails/email.css | 4 ++ .../zerver/emails/missed_message.source.html | 10 ++++ templates/zerver/emails/missed_message.txt | 11 ++++ zerver/lib/email_notifications.py | 5 +- zerver/tests/test_email_notifications.py | 54 +++++++++++++++---- 5 files changed, 74 insertions(+), 10 deletions(-) diff --git a/templates/zerver/emails/email.css b/templates/zerver/emails/email.css index 3668ce3025..36194bc7cd 100644 --- a/templates/zerver/emails/email.css +++ b/templates/zerver/emails/email.css @@ -299,6 +299,10 @@ a.button:hover { font-weight: bold; } +.content_disabled_help_link { + color: #15c; +} + @media only screen and (max-width: 620px) { table[class=body] h1 { font-size: 28px !important; diff --git a/templates/zerver/emails/missed_message.source.html b/templates/zerver/emails/missed_message.source.html index 103783dd35..194bfe8c13 100644 --- a/templates/zerver/emails/missed_message.source.html +++ b/templates/zerver/emails/missed_message.source.html @@ -11,6 +11,14 @@ {% endfor %} {% endfor %} + {% else %} +
+ {% if message_content_disabled_by_realm %} + This email does not include message content because your organization has disabled message content appearing in email notifications. + {% elif message_content_disabled_by_user %} + This email does not include message content because you have disabled message content appearing in email notifications. + {% endif %} +
{% endif %} {% endblock %} @@ -24,6 +32,8 @@ {% endif %} {% if reply_to_zulip %} Reply to this email directly, view it in Zulip, or manage email preferences. + {% elif not show_message_content %} + View or reply in Zulip, or manage email preferences.
{% else %} Reply in Zulip, or manage email preferences.

diff --git a/templates/zerver/emails/missed_message.txt b/templates/zerver/emails/missed_message.txt index ed87025e76..5b4d180805 100644 --- a/templates/zerver/emails/missed_message.txt +++ b/templates/zerver/emails/missed_message.txt @@ -6,6 +6,14 @@ {% endfor %} {% endfor %} {% endfor %} +{% else %} +{% if message_content_disabled_by_realm %} +This email does not include message content because your organization has disabled message content appearing in email notifications. +See {{ realm_uri }}/help/hide-message-content-in-emails for more details. +{% elif message_content_disabled_by_user %} +This email does not include message content because you have disabled message content appearing in email notifications. +See {{ realm_uri }}/help/pm-mention-alert-notifications for more details. +{% endif %} {% endif %} -- @@ -18,6 +26,9 @@ You are receiving this because you have email notifications enabled for this str {% if reply_to_zulip %} Reply to this email directly, or view it in Zulip: {{ narrow_url }} +{% elif not show_message_content %} +View or reply in Zulip: +{{ narrow_url }} {% else %} Reply in Zulip: {{ narrow_url }} diff --git a/zerver/lib/email_notifications.py b/zerver/lib/email_notifications.py index 2b5f2cd386..70dad29765 100644 --- a/zerver/lib/email_notifications.py +++ b/zerver/lib/email_notifications.py @@ -396,12 +396,15 @@ def do_send_missedmessage_events_reply_in_zulip(user_profile: UserProfile, # If message content is disabled, then flush all information we pass to email. if not message_content_allowed_in_missedmessage_emails(user_profile): + realm = user_profile.realm context.update({ 'reply_to_zulip': False, 'messages': [], 'sender_str': "", - 'realm_str': user_profile.realm.name, + 'realm_str': realm.name, 'huddle_display_name': "", + 'message_content_disabled_by_user': not user_profile.message_content_in_email_notifications, + 'message_content_disabled_by_realm': not realm.message_content_allowed_in_email_notifications, }) else: context.update({ diff --git a/zerver/tests/test_email_notifications.py b/zerver/tests/test_email_notifications.py index 9ed79d6f1b..79ca484198 100644 --- a/zerver/tests/test_email_notifications.py +++ b/zerver/tests/test_email_notifications.py @@ -203,7 +203,13 @@ class TestMissedMessages(ZulipTestCase): verify_body_does_not_include = [] # type: List[str] else: # Test in case if message content in missed email message are disabled. - verify_body_include = ['Manage email preferences: http://zulip.testserver/#settings/notifications'] + verify_body_include = [ + "This email does not include message content because you have disabled message ", + "http://zulip.testserver/help/pm-mention-alert-notifications ", + "View or reply in Zulip", + " Manage email preferences: http://zulip.testserver/#settings/notifications" + ] + email_subject = 'New missed messages' verify_body_does_not_include = ['Denmark > test', 'Othello, the Moor of Venice', '1 2 3 4 5 6 7 8 9 10 @**King Hamlet**', 'private', 'group', @@ -233,7 +239,12 @@ class TestMissedMessages(ZulipTestCase): verify_body_does_not_include = [] # type: List[str] else: # Test in case if message content in missed email message are disabled. - verify_body_include = ['Manage email preferences: http://zulip.testserver/#settings/notifications'] + verify_body_include = [ + "This email does not include message content because you have disabled message ", + "http://zulip.testserver/help/pm-mention-alert-notifications ", + "View or reply in Zulip", + " Manage email preferences: http://zulip.testserver/#settings/notifications" + ] email_subject = 'New missed messages' verify_body_does_not_include = ['Denmark > test', 'Othello, the Moor of Venice', '1 2 3 4 5 @**all**', 'private', 'group', @@ -273,7 +284,9 @@ class TestMissedMessages(ZulipTestCase): self._test_cases(msg_id, verify_body_include, email_subject, send_as_user, trigger='mentioned') def _extra_context_in_personal_missed_stream_messages(self, send_as_user: bool, - show_message_content: bool=True) -> None: + show_message_content: bool=True, + message_content_disabled_by_user: bool=False, + message_content_disabled_by_realm: bool=False) -> None: msg_id = self.send_personal_message( self.example_email('othello'), self.example_email('hamlet'), @@ -285,7 +298,20 @@ class TestMissedMessages(ZulipTestCase): email_subject = 'PMs with Othello, the Moor of Venice' verify_body_does_not_include = [] # type: List[str] else: - verify_body_include = ['Manage email preferences: http://zulip.testserver/#settings/notifications'] + if message_content_disabled_by_realm: + verify_body_include = [ + "This email does not include message content because your organization has disabled", + "http://zulip.testserver/help/hide-message-content-in-emails", + "View or reply in Zulip", + " Manage email preferences: http://zulip.testserver/#settings/notifications" + ] + elif message_content_disabled_by_user: + verify_body_include = [ + "This email does not include message content because you have disabled message ", + "http://zulip.testserver/help/pm-mention-alert-notifications ", + "View or reply in Zulip", + " Manage email preferences: http://zulip.testserver/#settings/notifications" + ] email_subject = 'New missed messages' verify_body_does_not_include = ['Othello, the Moor of Venice', 'Extremely personal message!', 'mentioned', 'group', 'Reply to this email directly, or view it in Zulip'] @@ -329,7 +355,12 @@ class TestMissedMessages(ZulipTestCase): email_subject = 'Group PMs with Iago and Othello, the Moor of Venice' verify_body_does_not_include = [] # type: List[str] else: - verify_body_include = ['Manage email preferences: http://zulip.testserver/#settings/notifications'] + verify_body_include = [ + "This email does not include message content because you have disabled message ", + "http://zulip.testserver/help/pm-mention-alert-notifications ", + "View or reply in Zulip", + " Manage email preferences: http://zulip.testserver/#settings/notifications" + ] email_subject = 'New missed messages' verify_body_does_not_include = ['Iago', 'Othello, the Moor of Venice Othello, the Moor of Venice', 'Group personal message!', 'mentioned', @@ -436,7 +467,8 @@ class TestMissedMessages(ZulipTestCase): mail.outbox = [] self._extra_context_in_missed_stream_messages_wildcard_mention(False, show_message_content=False) mail.outbox = [] - self._extra_context_in_personal_missed_stream_messages(False, show_message_content=False) + self._extra_context_in_personal_missed_stream_messages(False, show_message_content=False, + message_content_disabled_by_user=True) mail.outbox = [] self._extra_context_in_huddle_missed_stream_messages_two_others(False, show_message_content=False) @@ -540,7 +572,8 @@ class TestMissedMessages(ZulipTestCase): # Emails don't have missed message content when message content is disabled by the user do_change_notification_settings(user, "message_content_in_email_notifications", False) mail.outbox = [] - self._extra_context_in_personal_missed_stream_messages(False, show_message_content=False) + self._extra_context_in_personal_missed_stream_messages(False, show_message_content=False, + message_content_disabled_by_user=True) # When message content is not allowed at realm level # Emails don't have missed message irrespective of message content setting of the user @@ -550,11 +583,14 @@ class TestMissedMessages(ZulipTestCase): do_change_notification_settings(user, "message_content_in_email_notifications", True) mail.outbox = [] - self._extra_context_in_personal_missed_stream_messages(False, show_message_content=False) + self._extra_context_in_personal_missed_stream_messages(False, show_message_content=False, + message_content_disabled_by_realm=True) do_change_notification_settings(user, "message_content_in_email_notifications", False) mail.outbox = [] - self._extra_context_in_personal_missed_stream_messages(False, show_message_content=False) + self._extra_context_in_personal_missed_stream_messages(False, show_message_content=False, + message_content_disabled_by_user=True, + message_content_disabled_by_realm=True) def test_realm_emoji_in_missed_message(self) -> None: realm = get_realm("zulip")