Add backend support for newer realms receiving stream notifications by default.

(imported from commit ea8ee65071423a94a462571aa30013969d9f3f7a)
This commit is contained in:
Jessica McKellar
2013-09-20 09:52:21 -04:00
committed by Zev Benjamin
parent d434bf4bb4
commit f058e9cac5
2 changed files with 14 additions and 4 deletions

View File

@@ -740,6 +740,12 @@ def notify_subscriptions_added(user_profile, sub_pairs, no_log=False):
users=[user_profile.id]) users=[user_profile.id])
tornado_callbacks.send_notification(notice) tornado_callbacks.send_notification(notice)
def notify_for_streams_by_default(user_profile):
# For users in newer realms, generate notifications for stream
# messages by default.
return user_profile.realm.date_created > datetime.datetime(
2013, 9, 24, tzinfo=timezone.utc)
def bulk_add_subscriptions(streams, users): def bulk_add_subscriptions(streams, users):
recipients_map = bulk_get_recipients(Recipient.STREAM, [stream.id for stream in streams]) recipients_map = bulk_get_recipients(Recipient.STREAM, [stream.id for stream in streams])
recipients = [recipient.id for recipient in recipients_map.values()] recipients = [recipient.id for recipient in recipients_map.values()]
@@ -777,7 +783,8 @@ def bulk_add_subscriptions(streams, users):
for (user_profile, recipient_id, stream) in new_subs: for (user_profile, recipient_id, stream) in new_subs:
color = pick_color_helper(user_profile, subs_by_user[user_profile.id]) color = pick_color_helper(user_profile, subs_by_user[user_profile.id])
sub_to_add = Subscription(user_profile=user_profile, active=True, sub_to_add = Subscription(user_profile=user_profile, active=True,
color=color, recipient_id=recipient_id) color=color, recipient_id=recipient_id,
notifications=notify_for_streams_by_default(user_profile))
subs_by_user[user_profile.id].append(sub_to_add) subs_by_user[user_profile.id].append(sub_to_add)
subs_to_add.append((sub_to_add, stream)) subs_to_add.append((sub_to_add, stream))
Subscription.objects.bulk_create([sub for (sub, stream) in subs_to_add]) Subscription.objects.bulk_create([sub for (sub, stream) in subs_to_add])
@@ -818,7 +825,8 @@ def do_add_subscription(user_profile, stream, no_log=False):
color = pick_color(user_profile) color = pick_color(user_profile)
(subscription, created) = Subscription.objects.get_or_create( (subscription, created) = Subscription.objects.get_or_create(
user_profile=user_profile, recipient=recipient, user_profile=user_profile, recipient=recipient,
defaults={'active': True, 'color': color}) defaults={'active': True, 'color': color,
'notifications': notify_for_streams_by_default(user_profile)})
did_subscribe = created did_subscribe = created
if not subscription.active: if not subscription.active:
did_subscribe = True did_subscribe = True

View File

@@ -37,7 +37,8 @@ from zerver.lib.actions import do_remove_subscription, bulk_remove_subscriptions
do_send_messages, do_add_subscription, get_default_subs, do_deactivate, \ do_send_messages, do_add_subscription, get_default_subs, do_deactivate, \
user_email_is_unique, do_invite_users, do_refer_friend, compute_mit_user_fullname, \ user_email_is_unique, do_invite_users, do_refer_friend, compute_mit_user_fullname, \
do_add_alert_words, do_remove_alert_words, do_set_alert_words, get_subscriber_emails, \ do_add_alert_words, do_remove_alert_words, do_set_alert_words, get_subscriber_emails, \
update_user_activity_interval, do_set_muted_topics, do_rename_stream update_user_activity_interval, do_set_muted_topics, do_rename_stream, \
notify_for_streams_by_default
from zerver.lib.create_user import random_api_key from zerver.lib.create_user import random_api_key
from zerver.forms import RegistrationForm, HomepageForm, ToSForm, CreateBotForm, \ from zerver.forms import RegistrationForm, HomepageForm, ToSForm, CreateBotForm, \
is_inactive, not_mit_mailing_list is_inactive, not_mit_mailing_list
@@ -707,7 +708,8 @@ def home(request):
onboarding_steps = ujson.loads(user_profile.onboarding_steps), onboarding_steps = ujson.loads(user_profile.onboarding_steps),
staging = settings.STAGING_DEPLOYED or not settings.DEPLOYED, staging = settings.STAGING_DEPLOYED or not settings.DEPLOYED,
alert_words = register_ret['alert_words'], alert_words = register_ret['alert_words'],
show_admin = user_profile.show_admin show_admin = user_profile.show_admin,
notify_for_streams_by_default = notify_for_streams_by_default(user_profile)
)) ))
statsd.incr('views.home') statsd.incr('views.home')