From b875fe07eb3986723b1776404a0a28f130adf3ff Mon Sep 17 00:00:00 2001 From: Roman Godov Date: Sun, 7 Jan 2018 01:30:43 +0300 Subject: [PATCH] settings: Added setting to turn on and off realm name in email subject. Users having only account in one realm will not be distracted by realm name in subject lines of every email. Users who have multiple accounts in realms can turn this setting on and receive a corresponding realm name in email's subject. Tweaked by tabbott to rebase and address a few small issues. Fixes #5489. --- frontend_tests/node_tests/templates.js | 4 +++- static/js/notifications.js | 2 ++ static/js/settings_notifications.js | 3 ++- .../settings/notification-settings.handlebars | 20 ++++++++++++++++--- .../configure-email-digest-notifications.md | 4 ++-- zerver/lib/notifications.py | 1 + zerver/lib/send_email.py | 1 - ...userprofile_realm_name_in_notifications.py | 20 +++++++++++++++++++ zerver/models.py | 2 ++ zerver/tests/test_home.py | 1 + zerver/views/user_settings.py | 5 +++-- 11 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 zerver/migrations/0138_userprofile_realm_name_in_notifications.py diff --git a/frontend_tests/node_tests/templates.js b/frontend_tests/node_tests/templates.js index 1831e4295c..2a549133cc 100644 --- a/frontend_tests/node_tests/templates.js +++ b/frontend_tests/node_tests/templates.js @@ -1006,6 +1006,7 @@ function render(template_name, args) { enable_offline_push_notifications: true, enable_online_push_notifications: true, enable_digest_emails: true, default_desktop_notifications: true, + realm_name_in_notifications: true, }; var page_params = $.extend(page_param_checkbox_options, { full_name: "Alyssa P. Hacker", password_auth_enabled: true, @@ -1018,7 +1019,8 @@ function render(template_name, args) { "enable_sounds", "enable_offline_push_notifications", "enable_online_push_notifications", "enable_digest_emails", - "default_desktop_notifications"]; + "default_desktop_notifications", + "realm_name_in_notifications"]; // Render with all booleans set to true. var html = render('settings_tab', {page_params: page_params}); diff --git a/static/js/notifications.js b/static/js/notifications.js index 03f6f69e04..6cbdd15549 100644 --- a/static/js/notifications.js +++ b/static/js/notifications.js @@ -678,6 +678,8 @@ exports.handle_global_notification_updates = function (notification_name, settin page_params.enable_digest_emails = setting; } else if (notification_name === "pm_content_in_desktop_notifications") { page_params.pm_content_in_desktop_notifications = setting; + } else if (notification_name === "realm_name_in_notifications") { + page_params.realm_name_in_notifications = setting; } }; diff --git a/static/js/settings_notifications.js b/static/js/settings_notifications.js index 865f808433..e5854e68d1 100644 --- a/static/js/settings_notifications.js +++ b/static/js/settings_notifications.js @@ -13,6 +13,7 @@ var notification_settings = [ "enable_stream_push_notifications", "enable_stream_sounds", "pm_content_in_desktop_notifications", + "realm_name_in_notifications", ]; function maybe_bulk_update_stream_notification_setting(notification_checkbox, @@ -36,7 +37,7 @@ exports.set_up = function () { notify_settings_status.hide(); if (!page_params.realm_show_digest_email) { - $("#other_notifications").hide(); + $("#digest_container").hide(); } _.each(notification_settings, function (setting) { diff --git a/static/templates/settings/notification-settings.handlebars b/static/templates/settings/notification-settings.handlebars index 7201bd4bac..ce6c59f5e7 100644 --- a/static/templates/settings/notification-settings.handlebars +++ b/static/templates/settings/notification-settings.handlebars @@ -153,9 +153,23 @@ {{t "Digest emails when I'm away" }} - {{!-- If you add another control group here, make sure to change - $("#other_notifications").hide(); in settings.js to - $("#digest_container").hide(); + +
+ + +
+ + {{!-- If we end up removing the last control group, make sure to change + $("#digest_container").hide(); in settings_notifications.js to + $("#other_notifications").hide(); --}} diff --git a/templates/zerver/help/configure-email-digest-notifications.md b/templates/zerver/help/configure-email-digest-notifications.md index ff0ad2f43a..403f98561d 100644 --- a/templates/zerver/help/configure-email-digest-notifications.md +++ b/templates/zerver/help/configure-email-digest-notifications.md @@ -7,7 +7,7 @@ conversations and new users, while you were away. {!go-to-the.md!} [Notifications](/#settings/notifications) {!settings.md!} -2. Select the **Digest emails when I'm away** option under the -**Other notifications I want** section. +2. Select the **Send digest emails when I'm away** option under the +**Other notification settings** section. {!save-changes.md!} notification settings. diff --git a/zerver/lib/notifications.py b/zerver/lib/notifications.py index e4a62f5eac..705e03697f 100644 --- a/zerver/lib/notifications.py +++ b/zerver/lib/notifications.py @@ -297,6 +297,7 @@ def do_send_missedmessage_events_reply_in_zulip(user_profile: UserProfile, 'message_count': message_count, 'mention': missed_messages[0].is_stream_message(), 'unsubscribe_link': unsubscribe_link, + 'realm_name_in_notifications': user_profile.realm_name_in_notifications, }) # If this setting (email mirroring integration) is enabled, only then diff --git a/zerver/lib/send_email.py b/zerver/lib/send_email.py index 0cb1bc9701..1dab7e9c27 100644 --- a/zerver/lib/send_email.py +++ b/zerver/lib/send_email.py @@ -41,7 +41,6 @@ def build_email(template_prefix: str, to_user_id: Optional[int]=None, context = {} context.update({ - 'realm_name_in_notifications': False, 'support_email': FromAddress.SUPPORT, 'email_images_base_uri': settings.ROOT_DOMAIN_URI + '/static/images/emails', 'physical_address': settings.PHYSICAL_ADDRESS, diff --git a/zerver/migrations/0138_userprofile_realm_name_in_notifications.py b/zerver/migrations/0138_userprofile_realm_name_in_notifications.py new file mode 100644 index 0000000000..b4f9c4eae7 --- /dev/null +++ b/zerver/migrations/0138_userprofile_realm_name_in_notifications.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2018-01-21 08:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('zerver', '0137_realm_upload_quota_gb'), + ] + + operations = [ + migrations.AddField( + model_name='userprofile', + name='realm_name_in_notifications', + field=models.BooleanField(default=False), + ), + ] diff --git a/zerver/models.py b/zerver/models.py index c3f59c578c..788ee9a2a4 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -561,6 +561,7 @@ class UserProfile(AbstractBaseUser, PermissionsMixin): enable_online_push_notifications = models.BooleanField(default=False) # type: bool enable_digest_emails = models.BooleanField(default=True) # type: bool + realm_name_in_notifications = models.BooleanField(default=False) # type: bool # Old notification field superseded by existence of stream notification # settings. @@ -661,6 +662,7 @@ class UserProfile(AbstractBaseUser, PermissionsMixin): enable_stream_push_notifications=bool, enable_stream_sounds=bool, pm_content_in_desktop_notifications=bool, + realm_name_in_notifications=bool, ) class Meta: diff --git a/zerver/tests/test_home.py b/zerver/tests/test_home.py index 5c3334b7dc..4c2f6afa65 100644 --- a/zerver/tests/test_home.py +++ b/zerver/tests/test_home.py @@ -135,6 +135,7 @@ class HomeTest(ZulipTestCase): "realm_message_retention_days", "realm_name", "realm_name_changes_disabled", + "realm_name_in_notifications", "realm_non_active_users", "realm_notifications_stream_id", "realm_password_auth_enabled", diff --git a/zerver/views/user_settings.py b/zerver/views/user_settings.py index 21ed56f973..2db995105d 100644 --- a/zerver/views/user_settings.py +++ b/zerver/views/user_settings.py @@ -169,8 +169,9 @@ def json_change_notify_settings( enable_offline_push_notifications: Optional[bool]=REQ(validator=check_bool, default=None), enable_online_push_notifications: Optional[bool]=REQ(validator=check_bool, default=None), enable_digest_emails: Optional[bool]=REQ(validator=check_bool, default=None), - pm_content_in_desktop_notifications: Optional[bool]=REQ(validator=check_bool, default=None) -) -> HttpResponse: + pm_content_in_desktop_notifications: Optional[bool]=REQ(validator=check_bool, default=None), + realm_name_in_notifications: Optional[bool]=REQ(validator=check_bool, default=None)) \ + -> HttpResponse: result = {} # Stream notification settings.