diff --git a/templates/zerver/app/settings_overlay.html b/templates/zerver/app/settings_overlay.html index d6bb150b46..63bae0ed3c 100644 --- a/templates/zerver/app/settings_overlay.html +++ b/templates/zerver/app/settings_overlay.html @@ -111,6 +111,7 @@ {% endif %} + {% if not is_guest %}
  • {{ _('Default streams') }}
    @@ -118,6 +119,7 @@ {% endif %}
  • + {% endif %}
  • {{ _('Linkifiers') }}
    diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index d603b46bd5..741fe42c2a 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -3650,14 +3650,14 @@ def notify_default_streams(realm: Realm) -> None: type="default_streams", default_streams=streams_to_dicts_sorted(get_default_streams_for_realm(realm.id)) ) - send_event(realm, event, active_user_ids(realm.id)) + send_event(realm, event, active_non_guest_user_ids(realm.id)) def notify_default_stream_groups(realm: Realm) -> None: event = dict( type="default_stream_groups", default_stream_groups=default_stream_groups_to_dicts_sorted(get_default_stream_groups(realm)) ) - send_event(realm, event, active_user_ids(realm.id)) + send_event(realm, event, active_non_guest_user_ids(realm.id)) def do_add_default_stream(stream: Stream) -> None: realm_id = stream.realm_id diff --git a/zerver/lib/events.py b/zerver/lib/events.py index f9482d793c..edb64f1d98 100644 --- a/zerver/lib/events.py +++ b/zerver/lib/events.py @@ -289,11 +289,17 @@ def fetch_initial_state_data(user_profile: UserProfile, state['stream_name_max_length'] = Stream.MAX_NAME_LENGTH state['stream_description_max_length'] = Stream.MAX_DESCRIPTION_LENGTH if want('default_streams'): - state['realm_default_streams'] = streams_to_dicts_sorted( - get_default_streams_for_realm(realm.id)) + if user_profile.is_guest: + state['realm_default_streams'] = [] + else: + state['realm_default_streams'] = streams_to_dicts_sorted( + get_default_streams_for_realm(realm.id)) if want('default_stream_groups'): - state['realm_default_stream_groups'] = default_stream_groups_to_dicts_sorted( - get_default_stream_groups(realm)) + if user_profile.is_guest: + state['realm_default_stream_groups'] = [] + else: + state['realm_default_stream_groups'] = default_stream_groups_to_dicts_sorted( + get_default_stream_groups(realm)) if want('stop_words'): state['stop_words'] = read_stop_words() diff --git a/zerver/tests/test_events.py b/zerver/tests/test_events.py index 88ac4d878c..3f4cdd8619 100644 --- a/zerver/tests/test_events.py +++ b/zerver/tests/test_events.py @@ -44,6 +44,7 @@ from zerver.lib.actions import ( do_change_full_name, do_change_icon_source, do_change_is_admin, + do_change_is_guest, do_change_notification_settings, do_change_realm_domain, do_change_stream_description, @@ -1422,6 +1423,21 @@ class EventsRegisterTest(ZulipTestCase): error = default_stream_groups_checker('events[0]', events[0]) self.assert_on_error(error) + def test_default_stream_group_events_guest(self) -> None: + streams = [] + for stream_name in ["Scotland", "Verona", "Denmark"]: + streams.append(get_stream(stream_name, self.user_profile.realm)) + + do_create_default_stream_group(self.user_profile.realm, "group1", + "This is group1", streams) + group = lookup_default_stream_groups(["group1"], self.user_profile.realm)[0] + + do_change_is_guest(self.user_profile, True) + venice_stream = get_stream("Venice", self.user_profile.realm) + self.do_test(lambda: do_add_streams_to_default_stream_group(self.user_profile.realm, + group, [venice_stream]), + state_change_expected = False, num_events=0) + def test_default_streams_events(self) -> None: default_streams_checker = self.check_events_dict([ ('type', equals('default_streams')), @@ -1440,6 +1456,14 @@ class EventsRegisterTest(ZulipTestCase): error = default_streams_checker('events[0]', events[0]) self.assert_on_error(error) + def test_default_streams_events_guest(self) -> None: + do_change_is_guest(self.user_profile, True) + stream = get_stream("Scotland", self.user_profile.realm) + self.do_test(lambda: do_add_default_stream(stream), + state_change_expected = False, num_events=0) + self.do_test(lambda: do_remove_default_stream(stream), + state_change_expected = False, num_events=0) + def test_muted_topics_events(self) -> None: muted_topics_checker = self.check_events_dict([ ('type', equals('muted_topics')),