chore: admin interface changes
This commit is contained in:
@@ -4,3 +4,23 @@ from django.apps import AppConfig
|
||||
class AccountsConfig(AppConfig):
|
||||
default_auto_field = "django.db.models.BigAutoField"
|
||||
name = "accounts"
|
||||
|
||||
def ready(self):
|
||||
# django-admin-interface's Theme.logo/favicon are plain FileFields,
|
||||
# so without this they'd resolve through STORAGES["default"] (S3 -
|
||||
# see settings.py) like every submission/media upload. The theme's
|
||||
# logo/favicon (see accounts/fixtures/admin_interface_theme.json)
|
||||
# are actually a static asset (static/favicon.ico, built from
|
||||
# public/favicon.ico by Vite - see vite.config.ts), so point those
|
||||
# two fields at STATIC_ROOT/STATIC_URL instead, served by WhiteNoise
|
||||
# like any other static file.
|
||||
from django.conf import settings
|
||||
from django.core.files.storage import FileSystemStorage
|
||||
|
||||
from admin_interface.models import Theme
|
||||
|
||||
static_storage = FileSystemStorage(
|
||||
location=settings.STATIC_ROOT, base_url=settings.STATIC_URL
|
||||
)
|
||||
Theme._meta.get_field("logo").storage = static_storage
|
||||
Theme._meta.get_field("favicon").storage = static_storage
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
[
|
||||
{
|
||||
"model": "admin_interface.theme",
|
||||
"pk": 2,
|
||||
"fields": {
|
||||
"name": "Django Purple (by Legrems)",
|
||||
"active": true,
|
||||
"title": "Super administrateur de poney ",
|
||||
"title_color": "#E5B8FF",
|
||||
"title_visible": true,
|
||||
"logo": "favicon.ico",
|
||||
"logo_color": "#831a96",
|
||||
"logo_max_width": 400,
|
||||
"logo_max_height": 50,
|
||||
"logo_visible": true,
|
||||
"favicon": "favicon.ico",
|
||||
"env_name": "",
|
||||
"env_color": "#831a96",
|
||||
"env_visible_in_header": true,
|
||||
"env_visible_in_favicon": true,
|
||||
"language_chooser_active": true,
|
||||
"language_chooser_control": "default-select",
|
||||
"language_chooser_display": "code",
|
||||
"css_header_background_color": "#2d0840",
|
||||
"css_header_text_color": "#831a96",
|
||||
"css_header_link_color": "#FFFFFF",
|
||||
"css_header_link_hover_color": "#a82bb8",
|
||||
"css_module_background_color": "#6b0f7d",
|
||||
"css_module_background_selected_color": "#831a96",
|
||||
"css_module_text_color": "#FFFFFF",
|
||||
"css_module_link_color": "#FFFFFF",
|
||||
"css_module_link_selected_color": "#FFFFFF",
|
||||
"css_module_link_hover_color": "#a82bb8",
|
||||
"css_module_rounded_corners": true,
|
||||
"css_generic_link_color": "#2d0840",
|
||||
"css_generic_link_hover_color": "#5a0d6b",
|
||||
"css_save_button_background_color": "#2d0840",
|
||||
"css_save_button_background_hover_color": "#5a0d6b",
|
||||
"css_save_button_text_color": "#FFFFFF",
|
||||
"css_delete_button_background_color": "#a82bb8",
|
||||
"css_delete_button_background_hover_color": "#831a96",
|
||||
"css_delete_button_text_color": "#FFFFFF",
|
||||
"related_modal_active": true,
|
||||
"related_modal_background_color": "#000000",
|
||||
"related_modal_background_opacity": "0.3",
|
||||
"related_modal_rounded_corners": true,
|
||||
"related_modal_close_button_visible": true,
|
||||
"list_filter_highlight": true,
|
||||
"list_filter_dropdown": true,
|
||||
"list_filter_sticky": true,
|
||||
"list_filter_removal_links": false,
|
||||
"foldable_apps": true,
|
||||
"show_fieldsets_as_tabs": false,
|
||||
"show_inlines_as_tabs": false,
|
||||
"recent_actions_visible": true,
|
||||
"form_submit_sticky": false,
|
||||
"form_pagination_sticky": false
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,21 @@
|
||||
from django.core.management import call_command
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def load_admin_theme(apps, schema_editor):
|
||||
# Seeds the default django-admin-interface theme (see
|
||||
# accounts/fixtures/admin_interface_theme.json). Runs once, the first
|
||||
# time this migration is applied, so it won't clobber a theme later
|
||||
# edited by hand through the admin.
|
||||
call_command("loaddata", "admin_interface_theme.json")
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("accounts", "0002_customuser_points"),
|
||||
("admin_interface", "0032_alter_theme_defaults"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(load_admin_theme, migrations.RunPython.noop),
|
||||
]
|
||||
@@ -67,7 +67,14 @@ ALLOWED_HOSTS = [
|
||||
|
||||
INSTALLED_APPS = [
|
||||
"daphne",
|
||||
"django.contrib.admin",
|
||||
"admin_interface",
|
||||
"colorfield",
|
||||
# "palette" provides the admin/base.html override (the command-palette
|
||||
# UI) and must precede "palette.apps.PaletteAdminConfig", which stands
|
||||
# in for "django.contrib.admin" (same app name, custom AdminSite) to
|
||||
# wire the palette into the admin.
|
||||
"palette.apps.PaletteConfig",
|
||||
"palette.apps.PaletteAdminConfig",
|
||||
"django.contrib.auth",
|
||||
"django.contrib.contenttypes",
|
||||
"django.contrib.sessions",
|
||||
|
||||
@@ -28,6 +28,8 @@ dependencies = [
|
||||
"httpx>=0.28.1",
|
||||
"django-object-actions>=5.1.2",
|
||||
"python-dotenv>=1.2.3",
|
||||
"django-command-palette>=2022.11.25",
|
||||
"django-admin-interface>=0.32.0",
|
||||
]
|
||||
|
||||
[dependency-groups]
|
||||
|
||||
@@ -817,6 +817,19 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/94/5b/1328f8b84fce040c404f76822bf8c57d254e368e8cbd8bd67ec2b26d75f5/django-6.0.5-py3-none-any.whl", hash = "sha256:9d58a7cb49244e74c8e161d5e403a46d6209f1009ba40f5a66d6aa0d0786a8f0", size = 8368680, upload-time = "2026-05-05T13:54:33.532Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-admin-interface"
|
||||
version = "0.32.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django-colorfield" },
|
||||
{ name = "python-slugify" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/3e/09/d0b1a037bb11dc0d50e610e5f2818caa0eded9285aae0963703655692820/django_admin_interface-0.32.0.tar.gz", hash = "sha256:d0e80e382a7084ff59d0ba06934d6690fb6c04bb5327574f4c03b602fe41219c", size = 201052, upload-time = "2025-12-19T01:34:36.693Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/fd/85/3d5fbe90a1b52bbc650986e9a24284f2ad20eec8cd59cb99ba96a645d76f/django_admin_interface-0.32.0-py3-none-any.whl", hash = "sha256:f3684cfb857c12dd0befc95d5d45ac8a04840d54ad7d5920a9a10f3606e1bdcf", size = 266349, upload-time = "2025-12-19T01:34:35.016Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-channels"
|
||||
version = "0.7.0"
|
||||
@@ -831,6 +844,30 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/ea/2d/b8bfeda52e60495b73cc58ac30b676fc9a39008f0c9b68a0eb529768244b/django_channels-0.7.0-py3-none-any.whl", hash = "sha256:ceb5675ed0133bd54cc0529eb76157cc3b9ab67aceba7293ee5ac2fe4126987b", size = 9487, upload-time = "2016-10-04T07:51:31.322Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-colorfield"
|
||||
version = "0.14.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "pillow" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/49/4a/dcc1c9a071cf7e32391139843d4eb127a91bf9cbfe19596f924d51cb1680/django_colorfield-0.14.0.tar.gz", hash = "sha256:478dbd3975a88f2ea2a9afc325faaca05c54ebf04ec985ce130f6dea39dfb899", size = 36971, upload-time = "2025-04-30T19:27:39.581Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/e0/63/1226d92ec38286a7c1d41959fb2fb5ba4dd68e4a179d3554c478e8ee6c92/django_colorfield-0.14.0-py3-none-any.whl", hash = "sha256:f169c4e7ad8f336e51d4ea81f866346e7d4f336f3766e54e144cd16ea7d84a0e", size = 34827, upload-time = "2025-04-30T19:27:38.245Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-command-palette"
|
||||
version = "2022.11.25"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django", version = "5.2.14", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
|
||||
{ name = "django", version = "6.0.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/04/9c/394536e79c30a1718e87a84803a23d75d183f8240f5da7cbd5d526e7c579/django_command_palette-2022.11.25-py3-none-any.whl", hash = "sha256:5943110c94fd4fbadac8cee2554f516033ef64ba5f571cf7969ef90c34d9bbb2", size = 5999, upload-time = "2022-11-25T17:02:16.494Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-extensions"
|
||||
version = "4.1"
|
||||
@@ -2332,7 +2369,9 @@ dependencies = [
|
||||
{ name = "daphne" },
|
||||
{ name = "django", version = "5.2.14", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
|
||||
{ name = "django", version = "6.0.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
|
||||
{ name = "django-admin-interface" },
|
||||
{ name = "django-channels" },
|
||||
{ name = "django-command-palette" },
|
||||
{ name = "django-object-actions" },
|
||||
{ name = "django-redis" },
|
||||
{ name = "django-rq" },
|
||||
@@ -2378,7 +2417,9 @@ requires-dist = [
|
||||
{ name = "channels-redis" },
|
||||
{ name = "daphne" },
|
||||
{ name = "django" },
|
||||
{ name = "django-admin-interface", specifier = ">=0.32.0" },
|
||||
{ name = "django-channels" },
|
||||
{ name = "django-command-palette", specifier = ">=2022.11.25" },
|
||||
{ name = "django-object-actions", specifier = ">=5.1.2" },
|
||||
{ name = "django-redis" },
|
||||
{ name = "django-rq" },
|
||||
@@ -2796,6 +2837,18 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/e5/de/07cfd386974c2a26a7bde41f2111be29bbfc92b9ea0bb76694415a4a1a78/python_engineio-4.14.0-py3-none-any.whl", hash = "sha256:9f0fe275fb7d67bfc1a632421adf22949fd4843bd9c458c004b0a89cede302a2", size = 60291, upload-time = "2026-08-30T19:51:59.776Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "python-slugify"
|
||||
version = "8.0.4"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "text-unidecode" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload-time = "2024-02-08T18:32:45.488Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload-time = "2024-02-08T18:32:43.911Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "python-socketio"
|
||||
version = "5.17.0"
|
||||
@@ -3188,6 +3241,15 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "text-unidecode"
|
||||
version = "1.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload-time = "2019-08-30T21:36:45.405Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tomli"
|
||||
version = "2.4.1"
|
||||
|
||||
Reference in New Issue
Block a user