do_make_stream_web_public: Update all affected fields.

Convert this function that absolutely makes a stream web public.
We already have do_change_stream_invite_only to convert
streams to public and private streams.

We also update all the fields that should be set when a stream
is made web public.
This commit is contained in:
Aman Agrawal 2020-11-10 18:37:41 +05:30 committed by Tim Abbott
parent 70c0abc2e5
commit cba766f66f
3 changed files with 12 additions and 10 deletions

View File

@ -4569,9 +4569,11 @@ def do_change_stream_invite_only(
send_event(stream.realm, event, can_access_stream_user_ids(stream))
def do_change_stream_web_public(stream: Stream, is_web_public: bool) -> None:
stream.is_web_public = is_web_public
stream.save(update_fields=["is_web_public"])
def do_make_stream_web_public(stream: Stream) -> None:
stream.is_web_public = True
stream.invite_only = False
stream.history_public_to_subscribers = True
stream.save(update_fields=["invite_only", "history_public_to_subscribers", "is_web_public"])
def do_change_stream_post_policy(stream: Stream, stream_post_policy: int) -> None:

View File

@ -1,8 +1,8 @@
from django.http import HttpResponse
from zerver.lib.actions import (
do_change_stream_web_public,
do_deactivate_stream,
do_make_stream_web_public,
get_web_public_streams,
get_web_public_subs,
)
@ -26,7 +26,7 @@ class GlobalPublicStreamTest(ZulipTestCase):
def test_non_existant_topic(self) -> None:
test_stream = self.make_stream("Test public archives")
do_change_stream_web_public(test_stream, True)
do_make_stream_web_public(test_stream)
result = self.client_get(
"/archive/streams/" + str(test_stream.id) + "/topics/nonexistenttopic",
)
@ -34,7 +34,7 @@ class GlobalPublicStreamTest(ZulipTestCase):
def test_web_public_stream_topic(self) -> None:
test_stream = self.make_stream("Test public archives")
do_change_stream_web_public(test_stream, True)
do_make_stream_web_public(test_stream)
def send_msg_and_get_result(msg: str) -> HttpResponse:
self.send_stream_message(
@ -67,7 +67,7 @@ class GlobalPublicStreamTest(ZulipTestCase):
# Now add a second public stream
test_stream = self.make_stream("Test public archives")
do_change_stream_web_public(test_stream, True)
do_make_stream_web_public(test_stream)
public_streams = get_web_public_streams(realm)
self.assert_length(public_streams, 2)
info = get_web_public_subs(realm)
@ -111,7 +111,7 @@ class WebPublicTopicHistoryTest(ZulipTestCase):
def test_web_public_stream(self) -> None:
test_stream = self.make_stream("Test public archives")
do_change_stream_web_public(test_stream, True)
do_make_stream_web_public(test_stream)
self.send_stream_message(
self.example_user("iago"),

View File

@ -4,7 +4,7 @@ from unittest import mock
import orjson
from django.http import HttpResponse
from zerver.lib.actions import do_change_stream_invite_only, do_change_stream_web_public
from zerver.lib.actions import do_change_stream_invite_only, do_make_stream_web_public
from zerver.lib.cache import cache_get, to_dict_cache_key_id
from zerver.lib.emoji import emoji_name_to_emoji_code
from zerver.lib.message import extract_message_dict
@ -560,7 +560,7 @@ class ReactionEventTest(ZulipTestCase):
self.assert_json_success(remove)
# Make stream web_public as well.
do_change_stream_web_public(stream, True)
do_make_stream_web_public(stream)
# For is_web_public streams, events even on old messages
# should go to all subscribers, including guests like polonius.
events = []