mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 22:43:42 +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.presence import get_presence_for_user, get_presences_for_realm
|
||||||
from zerver.lib.push_notifications import push_notifications_enabled
|
from zerver.lib.push_notifications import push_notifications_enabled
|
||||||
from zerver.lib.realm_icon import realm_icon_url
|
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.request import JsonableError
|
||||||
from zerver.lib.soft_deactivation import reactivate_user_if_soft_deactivated
|
from zerver.lib.soft_deactivation import reactivate_user_if_soft_deactivated
|
||||||
from zerver.lib.stream_subscription import handle_stream_notifications_compatibility
|
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:
|
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_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_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
|
state['max_logo_file_size'] = settings.MAX_LOGO_FILE_SIZE
|
||||||
|
|
||||||
def always_want(msg_type: str) -> bool:
|
def always_want(msg_type: str) -> bool:
|
||||||
|
|||||||
@@ -6,14 +6,21 @@ from zerver.lib.upload import upload_backend
|
|||||||
from zerver.models import Realm
|
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:
|
if night:
|
||||||
logo_source = realm.night_logo_source
|
return realm.night_logo_source
|
||||||
logo_version = realm.night_logo_version
|
return realm.logo_source
|
||||||
else:
|
|
||||||
logo_source = realm.logo_source
|
def get_realm_logo_url(realm: Realm, night: bool) -> str:
|
||||||
logo_version = realm.logo_version
|
logo_source = get_realm_logo_source(realm, night)
|
||||||
if logo_source == 'U':
|
|
||||||
|
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 upload_backend.get_realm_logo_url(realm.id, logo_version, night)
|
||||||
return settings.DEFAULT_LOGO_URI+'?version=0'
|
return settings.DEFAULT_LOGO_URI+'?version=0'
|
||||||
|
|
||||||
|
|||||||
@@ -1392,13 +1392,13 @@ class RealmLogoTest(UploadSerializeMixin, ZulipTestCase):
|
|||||||
def test_get_default_logo(self) -> None:
|
def test_get_default_logo(self) -> None:
|
||||||
self.login('hamlet')
|
self.login('hamlet')
|
||||||
realm = get_realm('zulip')
|
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)})
|
response = self.client_get("/json/realm/logo", {'night': ujson.dumps(self.night)})
|
||||||
redirect_url = response['Location']
|
redirect_url = response['Location']
|
||||||
self.assertEqual(redirect_url, get_realm_logo_url(realm, self.night) +
|
is_night_str = str(self.night).lower()
|
||||||
f'&night={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')
|
self.login('hamlet')
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
do_change_logo_source(realm, Realm.LOGO_UPLOADED, self.night)
|
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) +
|
self.assertTrue(redirect_url.endswith(get_realm_logo_url(realm, self.night) +
|
||||||
f'&night={str(self.night).lower()}'))
|
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:
|
def test_valid_logos(self) -> None:
|
||||||
"""
|
"""
|
||||||
A PUT request to /json/realm/logo with a valid file should return a url
|
A PUT request to /json/realm/logo with a valid file should return a url
|
||||||
|
|||||||
Reference in New Issue
Block a user