mirror of
https://github.com/zulip/zulip.git
synced 2025-10-25 00:53:56 +00:00
realm_logo: Return default logo for realms on LIMITED plan.
This completes our effort to avoid destroying realm logo state while providing a path to dowgrade from paid plans to LIMITED.
This commit is contained in:
@@ -38,7 +38,7 @@ from zerver.lib.narrow import check_supported_events_narrow_filter, read_stop_wo
|
||||
from zerver.lib.presence import get_presence_for_user, get_presences_for_realm
|
||||
from zerver.lib.push_notifications import push_notifications_enabled
|
||||
from zerver.lib.realm_icon import realm_icon_url
|
||||
from zerver.lib.realm_logo import get_realm_logo_url
|
||||
from zerver.lib.realm_logo import get_realm_logo_source, get_realm_logo_url
|
||||
from zerver.lib.request import JsonableError
|
||||
from zerver.lib.soft_deactivation import reactivate_user_if_soft_deactivated
|
||||
from zerver.lib.stream_subscription import handle_stream_notifications_compatibility
|
||||
@@ -66,9 +66,9 @@ from zproject.backends import email_auth_enabled, password_auth_enabled
|
||||
|
||||
def add_realm_logo_fields(state: Dict[str, Any], realm: Realm) -> None:
|
||||
state['realm_logo_url'] = get_realm_logo_url(realm, night = False)
|
||||
state['realm_logo_source'] = realm.logo_source
|
||||
state['realm_logo_source'] = get_realm_logo_source(realm, night = False)
|
||||
state['realm_night_logo_url'] = get_realm_logo_url(realm, night = True)
|
||||
state['realm_night_logo_source'] = realm.night_logo_source
|
||||
state['realm_night_logo_source'] = get_realm_logo_source(realm, night = True)
|
||||
state['max_logo_file_size'] = settings.MAX_LOGO_FILE_SIZE
|
||||
|
||||
def always_want(msg_type: str) -> bool:
|
||||
|
||||
@@ -6,14 +6,21 @@ from zerver.lib.upload import upload_backend
|
||||
from zerver.models import Realm
|
||||
|
||||
|
||||
def get_realm_logo_url(realm: Realm, night: bool) -> str:
|
||||
def get_realm_logo_source(realm: Realm, night: bool) -> str:
|
||||
if realm.plan_type == Realm.LIMITED:
|
||||
return Realm.LOGO_DEFAULT
|
||||
if night:
|
||||
logo_source = realm.night_logo_source
|
||||
logo_version = realm.night_logo_version
|
||||
else:
|
||||
logo_source = realm.logo_source
|
||||
logo_version = realm.logo_version
|
||||
if logo_source == 'U':
|
||||
return realm.night_logo_source
|
||||
return realm.logo_source
|
||||
|
||||
def get_realm_logo_url(realm: Realm, night: bool) -> str:
|
||||
logo_source = get_realm_logo_source(realm, night)
|
||||
|
||||
if logo_source == Realm.LOGO_UPLOADED:
|
||||
if night:
|
||||
logo_version = realm.night_logo_version
|
||||
else:
|
||||
logo_version = realm.logo_version
|
||||
return upload_backend.get_realm_logo_url(realm.id, logo_version, night)
|
||||
return settings.DEFAULT_LOGO_URI+'?version=0'
|
||||
|
||||
|
||||
@@ -1392,13 +1392,13 @@ class RealmLogoTest(UploadSerializeMixin, ZulipTestCase):
|
||||
def test_get_default_logo(self) -> None:
|
||||
self.login('hamlet')
|
||||
realm = get_realm('zulip')
|
||||
do_change_logo_source(realm, Realm.LOGO_UPLOADED, self.night)
|
||||
do_change_logo_source(realm, Realm.LOGO_DEFAULT, self.night)
|
||||
response = self.client_get("/json/realm/logo", {'night': ujson.dumps(self.night)})
|
||||
redirect_url = response['Location']
|
||||
self.assertEqual(redirect_url, get_realm_logo_url(realm, self.night) +
|
||||
f'&night={str(self.night).lower()}')
|
||||
is_night_str = str(self.night).lower()
|
||||
self.assertEqual(redirect_url, f"/static/images/logo/zulip-org-logo.png?version=0&night={is_night_str}")
|
||||
|
||||
def test_get_realm_logo(self) -> None:
|
||||
def test_get_uploaded_logo(self) -> None:
|
||||
self.login('hamlet')
|
||||
realm = get_realm('zulip')
|
||||
do_change_logo_source(realm, Realm.LOGO_UPLOADED, self.night)
|
||||
@@ -1407,6 +1407,23 @@ class RealmLogoTest(UploadSerializeMixin, ZulipTestCase):
|
||||
self.assertTrue(redirect_url.endswith(get_realm_logo_url(realm, self.night) +
|
||||
f'&night={str(self.night).lower()}'))
|
||||
|
||||
is_night_str = str(self.night).lower()
|
||||
|
||||
if self.night:
|
||||
file_name = "night_logo.png"
|
||||
else:
|
||||
file_name = "logo.png"
|
||||
self.assertEqual(redirect_url, f"/user_avatars/{realm.id}/realm/{file_name}?version=2&night={is_night_str}")
|
||||
|
||||
do_change_plan_type(realm, Realm.LIMITED)
|
||||
if self.night:
|
||||
self.assertEqual(realm.night_logo_source, Realm.LOGO_UPLOADED)
|
||||
else:
|
||||
self.assertEqual(realm.logo_source, Realm.LOGO_UPLOADED)
|
||||
response = self.client_get("/json/realm/logo", {'night': ujson.dumps(self.night)})
|
||||
redirect_url = response['Location']
|
||||
self.assertEqual(redirect_url, f"/static/images/logo/zulip-org-logo.png?version=0&night={is_night_str}")
|
||||
|
||||
def test_valid_logos(self) -> None:
|
||||
"""
|
||||
A PUT request to /json/realm/logo with a valid file should return a url
|
||||
|
||||
Reference in New Issue
Block a user