kopia lustrzana https://github.com/wagtail/wagtail
Add density parameter to user profile
rodzic
b57a9a94a0
commit
fe148c01e5
|
@ -140,4 +140,4 @@ class AvatarPreferencesForm(forms.ModelForm):
|
|||
class ThemePreferencesForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = UserProfile
|
||||
fields = ["theme"]
|
||||
fields = ["theme", "density"]
|
||||
|
|
|
@ -666,7 +666,12 @@ def admin_theme_classname(context):
|
|||
if hasattr(user, "wagtail_userprofile")
|
||||
else "system"
|
||||
)
|
||||
return f"w-theme-{theme_name}"
|
||||
density_name = (
|
||||
user.wagtail_userprofile.density
|
||||
if hasattr(user, "wagtail_userprofile")
|
||||
else "default"
|
||||
)
|
||||
return f"w-theme-{theme_name} w-density-{density_name}"
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
|
|
|
@ -231,6 +231,7 @@ class TestAccountSectionUtilsMixin:
|
|||
"locale-preferred_language": "es",
|
||||
"locale-current_time_zone": "Europe/London",
|
||||
"theme-theme": "dark",
|
||||
"theme-density": "default",
|
||||
}
|
||||
post_data.update(extra_post_data)
|
||||
return self.client.post(reverse("wagtailadmin_account"), post_data)
|
||||
|
@ -476,7 +477,10 @@ class TestAccountSection(WagtailTestUtils, TestCase, TestAccountSectionUtilsMixi
|
|||
|
||||
# check that the updated language preference is now indicated in HTML header
|
||||
response = self.client.get(reverse("wagtailadmin_home"))
|
||||
self.assertContains(response, '<html lang="es" dir="ltr" class="w-theme-dark">')
|
||||
self.assertContains(
|
||||
response,
|
||||
'<html lang="es" dir="ltr" class="w-theme-dark w-density-default">',
|
||||
)
|
||||
|
||||
def test_unset_language_preferences(self):
|
||||
profile = UserProfile.get_for_user(self.user)
|
||||
|
@ -602,6 +606,21 @@ class TestAccountSection(WagtailTestUtils, TestCase, TestAccountSectionUtilsMixi
|
|||
|
||||
self.assertEqual(profile.theme, "light")
|
||||
|
||||
def test_change_density_post(self):
|
||||
response = self.post_form(
|
||||
{
|
||||
"theme-density": "snug",
|
||||
}
|
||||
)
|
||||
|
||||
# Check that the user was redirected to the account page
|
||||
self.assertRedirects(response, reverse("wagtailadmin_account"))
|
||||
|
||||
profile = UserProfile.get_for_user(self.user)
|
||||
profile.refresh_from_db()
|
||||
|
||||
self.assertEqual(profile.density, "snug")
|
||||
|
||||
def test_sensitive_post_parameters(self):
|
||||
request = RequestFactory().post("wagtailadmin_account", data={})
|
||||
request.user = self.user
|
||||
|
|
|
@ -80,14 +80,16 @@ class TestLoginView(WagtailTestUtils, TestCase):
|
|||
def test_language_code(self):
|
||||
response = self.client.get(reverse("wagtailadmin_login"))
|
||||
self.assertContains(
|
||||
response, '<html lang="de" dir="ltr" class="w-theme-system">'
|
||||
response,
|
||||
'<html lang="de" dir="ltr" class="w-theme-system w-density-default">',
|
||||
)
|
||||
|
||||
@override_settings(LANGUAGE_CODE="he")
|
||||
def test_bidi_language_changes_dir_attribute(self):
|
||||
response = self.client.get(reverse("wagtailadmin_login"))
|
||||
self.assertContains(
|
||||
response, '<html lang="he" dir="rtl" class="w-theme-system">'
|
||||
response,
|
||||
'<html lang="he" dir="rtl" class="w-theme-system w-density-default">',
|
||||
)
|
||||
|
||||
@override_settings(
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 4.2.9 on 2024-04-11 08:38
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailusers", "0012_userprofile_theme"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="userprofile",
|
||||
name="density",
|
||||
field=models.CharField(
|
||||
choices=[("default", "Default"), ("snug", "Snug")],
|
||||
default="default",
|
||||
max_length=40,
|
||||
verbose_name="density",
|
||||
),
|
||||
),
|
||||
]
|
|
@ -72,15 +72,26 @@ class UserProfile(models.Model):
|
|||
|
||||
dismissibles = models.JSONField(default=dict, blank=True)
|
||||
|
||||
class AdminThemes(models.TextChoices):
|
||||
class AdminColorThemes(models.TextChoices):
|
||||
SYSTEM = "system", _("System default")
|
||||
LIGHT = "light", _("Light")
|
||||
DARK = "dark", _("Dark")
|
||||
|
||||
theme = models.CharField(
|
||||
verbose_name=_("admin theme"),
|
||||
choices=AdminThemes.choices,
|
||||
default=AdminThemes.SYSTEM,
|
||||
choices=AdminColorThemes.choices,
|
||||
default=AdminColorThemes.SYSTEM,
|
||||
max_length=40,
|
||||
)
|
||||
|
||||
class AdminDensityThemes(models.TextChoices):
|
||||
DEFAULT = "default", _("Default")
|
||||
SNUG = "snug", _("Snug")
|
||||
|
||||
density = models.CharField(
|
||||
verbose_name=_("density"),
|
||||
choices=AdminDensityThemes.choices,
|
||||
default=AdminDensityThemes.DEFAULT,
|
||||
max_length=40,
|
||||
)
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue