settings: Add web-public streams beta subdomain list.

This will make it convenient to add a handful of organizations to the
beta of this feature during its first few weeks to try to catch bugs,
before we open it to everyone in Zulip Cloud.
This commit is contained in:
Tim Abbott
2022-03-10 12:50:06 -08:00
committed by Alex Vandiver
parent 57f01e0727
commit 20368a936c
4 changed files with 17 additions and 2 deletions

View File

@@ -297,7 +297,7 @@ def fetch_initial_state_data(
state["server_inline_url_embed_preview"] = settings.INLINE_URL_EMBED_PREVIEW state["server_inline_url_embed_preview"] = settings.INLINE_URL_EMBED_PREVIEW
state["server_avatar_changes_disabled"] = settings.AVATAR_CHANGES_DISABLED state["server_avatar_changes_disabled"] = settings.AVATAR_CHANGES_DISABLED
state["server_name_changes_disabled"] = settings.NAME_CHANGES_DISABLED state["server_name_changes_disabled"] = settings.NAME_CHANGES_DISABLED
state["server_web_public_streams_enabled"] = settings.WEB_PUBLIC_STREAMS_ENABLED state["server_web_public_streams_enabled"] = realm.web_public_streams_available_for_realm()
state["giphy_rating_options"] = realm.GIPHY_RATING_OPTIONS state["giphy_rating_options"] = realm.GIPHY_RATING_OPTIONS
state["server_needs_upgrade"] = is_outdated_server(user_profile) state["server_needs_upgrade"] = is_outdated_server(user_profile)

View File

@@ -923,13 +923,22 @@ class Realm(models.Model):
def presence_disabled(self) -> bool: def presence_disabled(self) -> bool:
return self.is_zephyr_mirror_realm return self.is_zephyr_mirror_realm
def web_public_streams_enabled(self) -> bool: def web_public_streams_available_for_realm(self) -> bool:
if self.string_id in settings.WEB_PUBLIC_STREAMS_BETA_SUBDOMAINS:
return True
if not settings.WEB_PUBLIC_STREAMS_ENABLED: if not settings.WEB_PUBLIC_STREAMS_ENABLED:
# To help protect against accidentally web-public streams in # To help protect against accidentally web-public streams in
# self-hosted servers, we require the feature to be enabled at # self-hosted servers, we require the feature to be enabled at
# the server level before it is available to users. # the server level before it is available to users.
return False return False
return True
def web_public_streams_enabled(self) -> bool:
if not self.web_public_streams_available_for_realm():
return False
if self.plan_type == Realm.PLAN_TYPE_LIMITED: if self.plan_type == Realm.PLAN_TYPE_LIMITED:
# In Zulip Cloud, we also require a paid or sponsored # In Zulip Cloud, we also require a paid or sponsored
# plan, to protect against the spam/abuse attacks that # plan, to protect against the spam/abuse attacks that

View File

@@ -847,6 +847,10 @@ class RealmTest(ZulipTestCase):
self.assertEqual(realm.has_web_public_streams(), False) self.assertEqual(realm.has_web_public_streams(), False)
self.assertEqual(realm.web_public_streams_enabled(), False) self.assertEqual(realm.web_public_streams_enabled(), False)
with self.settings(WEB_PUBLIC_STREAMS_BETA_SUBDOMAINS=["zulip"]):
self.assertEqual(realm.has_web_public_streams(), True)
self.assertEqual(realm.web_public_streams_enabled(), True)
realm.enable_spectator_access = False realm.enable_spectator_access = False
realm.save() realm.save()
self.assertEqual(realm.has_web_public_streams(), False) self.assertEqual(realm.has_web_public_streams(), False)

View File

@@ -261,6 +261,8 @@ OPEN_REALM_CREATION = False
# Whether it's possible to create web-public streams on this server. # Whether it's possible to create web-public streams on this server.
WEB_PUBLIC_STREAMS_ENABLED = False WEB_PUBLIC_STREAMS_ENABLED = False
# Temporary setting during web-public streams beta.
WEB_PUBLIC_STREAMS_BETA_SUBDOMAINS: List[str] = []
# Setting for where the system bot users are. Likely has no # Setting for where the system bot users are. Likely has no
# purpose now that the REALMS_HAVE_SUBDOMAINS migration is finished. # purpose now that the REALMS_HAVE_SUBDOMAINS migration is finished.