mirror of https://github.com/zulip/zulip.git
models: Switch font size default to non-compact.
This is the intended longer-term default, and it's polished enough for testing.
This commit is contained in:
parent
b4c699db85
commit
f37082c4ca
|
@ -0,0 +1,42 @@
|
|||
# Generated by Django 5.0.6 on 2024-07-18 00:06
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("zerver", "0555_alter_onboardingstep_onboarding_step"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="realmuserdefault",
|
||||
name="dense_mode",
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="realmuserdefault",
|
||||
name="web_font_size_px",
|
||||
field=models.PositiveSmallIntegerField(default=16),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="realmuserdefault",
|
||||
name="web_line_height_percent",
|
||||
field=models.PositiveSmallIntegerField(default=140),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="dense_mode",
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="web_font_size_px",
|
||||
field=models.PositiveSmallIntegerField(default=16),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="web_line_height_percent",
|
||||
field=models.PositiveSmallIntegerField(default=140),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,44 @@
|
|||
# Generated by Django 5.0.6 on 2024-07-17 15:10
|
||||
|
||||
|
||||
from django.db import migrations
|
||||
from django.db.backends.base.schema import BaseDatabaseSchemaEditor
|
||||
from django.db.migrations.state import StateApps
|
||||
|
||||
|
||||
def set_default_values_for_information_density_settings(
|
||||
apps: StateApps, schema_editor: BaseDatabaseSchemaEditor
|
||||
) -> None:
|
||||
"""Set defaults for information density settings to their intended values."""
|
||||
RealmUserDefault = apps.get_model("zerver", "RealmUserDefault")
|
||||
UserProfile = apps.get_model("zerver", "UserProfile")
|
||||
|
||||
WEB_FONT_SIZE_PX_DEFAULT = 16
|
||||
WEB_LINE_HEIGHT_PERCENT_DEFAULT = 140
|
||||
|
||||
RealmUserDefault.objects.update(
|
||||
dense_mode=False,
|
||||
web_font_size_px=WEB_FONT_SIZE_PX_DEFAULT,
|
||||
web_line_height_percent=WEB_LINE_HEIGHT_PERCENT_DEFAULT,
|
||||
)
|
||||
UserProfile.objects.update(
|
||||
dense_mode=False,
|
||||
web_font_size_px=WEB_FONT_SIZE_PX_DEFAULT,
|
||||
web_line_height_percent=WEB_LINE_HEIGHT_PERCENT_DEFAULT,
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
atomic = False
|
||||
|
||||
dependencies = [
|
||||
("zerver", "0556_alter_realmuserdefault_dense_mode_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
set_default_values_for_information_density_settings,
|
||||
elidable=True,
|
||||
reverse_code=migrations.RunPython.noop,
|
||||
),
|
||||
]
|
|
@ -65,7 +65,6 @@ class UserBaseSettings(models.Model):
|
|||
# Values for it are URL suffix after `#`.
|
||||
web_home_view = models.TextField(default="inbox")
|
||||
web_escape_navigates_to_home_view = models.BooleanField(default=True)
|
||||
dense_mode = models.BooleanField(default=True)
|
||||
fluid_layout_width = models.BooleanField(default=False)
|
||||
high_contrast_mode = models.BooleanField(default=False)
|
||||
translate_emoticons = models.BooleanField(default=False)
|
||||
|
@ -80,11 +79,14 @@ class UserBaseSettings(models.Model):
|
|||
|
||||
# Information density is established through
|
||||
# adjustments to the font size and line height.
|
||||
WEB_FONT_SIZE_PX_LEGACY = 14
|
||||
WEB_LINE_HEIGHT_PERCENT_LEGACY = 122
|
||||
web_font_size_px = models.PositiveSmallIntegerField(default=WEB_FONT_SIZE_PX_LEGACY)
|
||||
WEB_FONT_SIZE_PX_COMPACT = 14
|
||||
WEB_FONT_SIZE_PX_DEFAULT = 16
|
||||
WEB_LINE_HEIGHT_PERCENT_COMPACT = 122
|
||||
WEB_LINE_HEIGHT_PERCENT_DEFAULT = 140
|
||||
dense_mode = models.BooleanField(default=False)
|
||||
web_font_size_px = models.PositiveSmallIntegerField(default=WEB_FONT_SIZE_PX_DEFAULT)
|
||||
web_line_height_percent = models.PositiveSmallIntegerField(
|
||||
default=WEB_LINE_HEIGHT_PERCENT_LEGACY
|
||||
default=WEB_LINE_HEIGHT_PERCENT_DEFAULT
|
||||
)
|
||||
|
||||
# UI setting controlling Zulip's behavior of demoting in the sort
|
||||
|
|
|
@ -3753,8 +3753,8 @@ class RealmPropertyActionTest(BaseAction):
|
|||
def do_set_realm_user_default_setting_test(self, name: str) -> None:
|
||||
bool_tests: list[bool] = [True, False, True]
|
||||
test_values: dict[str, Any] = dict(
|
||||
web_font_size_px=[UserProfile.WEB_FONT_SIZE_PX_LEGACY],
|
||||
web_line_height_percent=[UserProfile.WEB_LINE_HEIGHT_PERCENT_LEGACY],
|
||||
web_font_size_px=[UserProfile.WEB_FONT_SIZE_PX_COMPACT],
|
||||
web_line_height_percent=[UserProfile.WEB_LINE_HEIGHT_PERCENT_COMPACT],
|
||||
color_scheme=UserProfile.COLOR_SCHEME_CHOICES,
|
||||
web_home_view=["recent_topics", "inbox", "all_messages"],
|
||||
emojiset=[emojiset["key"] for emojiset in RealmUserDefault.emojiset_choices()],
|
||||
|
|
|
@ -1937,8 +1937,8 @@ class RealmAPITest(ZulipTestCase):
|
|||
def do_test_realm_default_setting_update_api(self, name: str) -> None:
|
||||
bool_tests: list[bool] = [False, True]
|
||||
test_values: dict[str, Any] = dict(
|
||||
web_font_size_px=[UserProfile.WEB_FONT_SIZE_PX_LEGACY],
|
||||
web_line_height_percent=[UserProfile.WEB_LINE_HEIGHT_PERCENT_LEGACY],
|
||||
web_font_size_px=[UserProfile.WEB_FONT_SIZE_PX_COMPACT],
|
||||
web_line_height_percent=[UserProfile.WEB_LINE_HEIGHT_PERCENT_COMPACT],
|
||||
color_scheme=UserProfile.COLOR_SCHEME_CHOICES,
|
||||
web_home_view=["recent_topics", "inbox", "all_messages"],
|
||||
emojiset=[emojiset["key"] for emojiset in RealmUserDefault.emojiset_choices()],
|
||||
|
@ -1988,12 +1988,22 @@ class RealmAPITest(ZulipTestCase):
|
|||
# settings in RealmUserDefault table will be used.
|
||||
if prop in ["default_language", "enable_login_emails", "enable_marketing_emails"]:
|
||||
continue
|
||||
if prop in ["dense_mode"]:
|
||||
# Testing this is complicated, see test_update_default_information_density_settings.
|
||||
continue
|
||||
self.do_test_realm_default_setting_update_api(prop)
|
||||
|
||||
def test_update_default_information_density_settings(self) -> None:
|
||||
realm = get_realm("zulip")
|
||||
|
||||
# Start with the legacy settings configuration
|
||||
realm_user_default = RealmUserDefault.objects.get(realm=realm)
|
||||
self.assertEqual(realm_user_default.dense_mode, True)
|
||||
realm_user_default.dense_mode = True
|
||||
realm_user_default.web_font_size_px = RealmUserDefault.WEB_FONT_SIZE_PX_COMPACT
|
||||
realm_user_default.web_line_height_percent = (
|
||||
RealmUserDefault.WEB_LINE_HEIGHT_PERCENT_COMPACT
|
||||
)
|
||||
realm_user_default.save()
|
||||
self.login("iago")
|
||||
|
||||
data: dict[str, str | int] = {"web_font_size_px": 16}
|
||||
|
|
|
@ -218,7 +218,12 @@ class ChangeSettingsTest(ZulipTestCase):
|
|||
def test_toggling_boolean_user_settings(self) -> None:
|
||||
"""Test updating each boolean setting in UserProfile property_types"""
|
||||
boolean_settings = (
|
||||
s for s in UserProfile.property_types if UserProfile.property_types[s] is bool
|
||||
s
|
||||
for s in UserProfile.property_types
|
||||
if UserProfile.property_types[s] is bool
|
||||
# Dense mode can't be toggled without changing other settings too.
|
||||
# This setting is tested in test_changing_information_density_settings.
|
||||
and s not in ["dense_mode"]
|
||||
)
|
||||
for user_setting in boolean_settings:
|
||||
self.check_for_toggle_param_patch("/json/settings", user_setting)
|
||||
|
@ -503,7 +508,10 @@ class ChangeSettingsTest(ZulipTestCase):
|
|||
|
||||
def test_changing_information_density_settings(self) -> None:
|
||||
hamlet = self.example_user("hamlet")
|
||||
self.assertEqual(hamlet.dense_mode, True)
|
||||
hamlet.dense_mode = True
|
||||
hamlet.web_font_size_px = 14
|
||||
hamlet.web_line_height_percent = 122
|
||||
hamlet.save()
|
||||
self.login("hamlet")
|
||||
|
||||
data: dict[str, str | int] = {"web_font_size_px": 16}
|
||||
|
|
|
@ -209,12 +209,12 @@ def check_information_density_setting_values(
|
|||
)
|
||||
|
||||
if dense_mode:
|
||||
if web_font_size_px != UserBaseSettings.WEB_FONT_SIZE_PX_LEGACY:
|
||||
if web_font_size_px != UserBaseSettings.WEB_FONT_SIZE_PX_COMPACT:
|
||||
raise JsonableError(
|
||||
_("Incompatible values for 'dense_mode' and 'web_font_size_px' settings.")
|
||||
)
|
||||
|
||||
if web_line_height_percent != UserBaseSettings.WEB_LINE_HEIGHT_PERCENT_LEGACY:
|
||||
if web_line_height_percent != UserBaseSettings.WEB_LINE_HEIGHT_PERCENT_COMPACT:
|
||||
raise JsonableError(
|
||||
_("Incompatible values for 'dense_mode' and 'web_line_height_percent' settings.")
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue