From a57d6b5f9de327deed5821b764b436315cb64239 Mon Sep 17 00:00:00 2001 From: mortezaei Date: Wed, 31 Dec 2025 13:31:25 +0330 Subject: [PATCH] Refactor color management in admin panels by removing global color definitions from base settings and implementing specific color palettes for Formula and Dovoodi admin sites. --- config/settings/base.py | 52 +---------------- utils/admin.py | 123 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+), 49 deletions(-) diff --git a/config/settings/base.py b/config/settings/base.py index e129d1d..e4334cc 100755 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -342,55 +342,9 @@ UNFOLD = { "LOGIN": { "image": lambda request: static("images/image1.jpg"), }, - "COLORS": { - "base": { - "50": "249 250 251", - "100": "243 244 246", - "200": "229 231 235", - "300": "209 213 219", - "400": "156 163 175", - "500": "107 114 128", - "600": "75 85 99", - "700": "55 65 81", - "800": "31 41 55", - "900": "17 24 39", - "950": "3 7 18", - }, - "primary": { - "50": "234 253 243", - "100": "208 251 232", - "200": "167 247 216", - "300": "110 240 189", - "400": "37 213 152", - "500": "37 208 118", # #25D076 - رنگ دکمه اصلی - "600": "29 166 94", - "700": "25 136 80", - "800": "22 108 66", - "900": "20 89 57", - "950": "10 53 34", - }, - "secondary": { - "50": "240 253 250", - "100": "204 251 241", - "200": "153 246 228", - "300": "94 234 212", - "400": "45 212 191", - "500": "1 53 59", # #01353B - رنگ پس‌زمینه - "600": "1 43 48", - "700": "1 36 40", - "800": "1 30 34", - "900": "0 26 29", - "950": "0 13 15", - }, - "font": { - "subtle-light": "var(--color-base-500)", - "subtle-dark": "var(--color-base-400)", - "default-light": "var(--color-secondary-500)", # استفاده از رنگ ثانویه برای متن - "default-dark": "var(--color-base-300)", - "important-light": "var(--color-base-900)", - "important-dark": "255 255 255", # #FFFFFF - برای متن سفید در دکمه‌ها - }, - }, + # ✅ COLORS حذف شد - هر AdminSite رنگ‌های خودش را در utils/admin.py تعریف می‌کند + # - FormulaAdminSite: پالت سبز برای امام جواد + # - DovoodiAdminSite: پالت آبی-تیره برای داوودی (مطابق فرانت) "STYLES": [ # lambda request: static("css/styles.css"), ], diff --git a/utils/admin.py b/utils/admin.py index 1ae23ed..4e54939 100644 --- a/utils/admin.py +++ b/utils/admin.py @@ -95,6 +95,66 @@ class FormulaAdminSite(UnfoldAdminSite): super().__init__(*args, **kwargs) # Set login form after initialization to avoid circular import self.login_form = LoginForm.get_form() + + def _get_colors(self, key, *args): + """Override colors for Imam Javad admin panel with green theme""" + from unfold.utils import hex_to_rgb + + if key != "COLORS": + return super()._get_colors(key, *args) + + # پالت رنگی سبز برای امام جواد + imam_javad_colors = { + "base": { + "50": "249 250 251", + "100": "243 244 246", + "200": "229 231 235", + "300": "209 213 219", + "400": "156 163 175", + "500": "107 114 128", + "600": "75 85 99", + "700": "55 65 81", + "800": "31 41 55", + "900": "17 24 39", + "950": "3 7 18", + }, + "primary": { + "50": "234 253 243", + "100": "208 251 232", + "200": "167 247 216", + "300": "110 240 189", + "400": "37 213 152", + "500": "37 208 118", # #25D076 - سبز اصلی + "600": "29 166 94", + "700": "25 136 80", + "800": "22 108 66", + "900": "20 89 57", + "950": "10 53 34", + }, + "secondary": { + "50": "240 253 250", + "100": "204 251 241", + "200": "153 246 228", + "300": "94 234 212", + "400": "45 212 191", + "500": "1 53 59", # #01353B - پس‌زمینه تیره + "600": "1 43 48", + "700": "1 36 40", + "800": "1 30 34", + "900": "0 26 29", + "950": "0 13 15", + }, + "font": { + "subtle-light": "var(--color-base-500)", + "subtle-dark": "var(--color-base-400)", + "default-light": "var(--color-secondary-500)", + "default-dark": "var(--color-base-300)", + "important-light": "var(--color-base-900)", + "important-dark": "255 255 255", + }, + } + + return imam_javad_colors class DovoodiAdminSite(UnfoldAdminSite): """Secondary Admin for Dovoodi""" @@ -107,6 +167,69 @@ class DovoodiAdminSite(UnfoldAdminSite): super().__init__(*args, **kwargs) # Set login form after initialization to avoid circular import self.login_form = LoginForm.get_form() + + def _get_colors(self, key, *args): + """Override colors for Dovoodi admin panel with blue/teal theme matching frontend""" + from unfold.utils import hex_to_rgb + + if key != "COLORS": + return super()._get_colors(key, *args) + + # پالت رنگی آبی-تیره برای داوودی (مطابق با فرانت) + dovoodi_colors = { + "base": { + # استفاده از Wormy scale برای base + "50": "252 251 250", # #FCFBFA + "100": "246 245 244", # #F6F5F4 + "200": "240 236 233", # #F0ECE9 + "300": "229 220 211", # #E5DCD3 + "400": "191 174 157", # #BFAE9D + "500": "107 114 128", + "600": "75 85 99", + "700": "55 65 81", + "800": "31 41 55", + "900": "17 24 39", # #111827 + "950": "3 7 18", + }, + "primary": { + # استفاده از رنگ آبی اصلی فرانت + "50": "240 244 255", # #F0F4FF + "100": "224 231 255", # #E0E7FF + "200": "199 210 254", # #C7D2FE + "300": "165 180 252", # #A5B4FC + "400": "129 140 248", # #818CF8 + "500": "99 102 241", # #6366F1 + "600": "81 114 225", # #5172E1 - رنگ اصلی فرانت + "700": "59 89 196", # #3B59C4 + "800": "45 68 145", # #2D4491 + "900": "30 41 91", + "950": "15 20 45", + }, + "secondary": { + # استفاده از Second scale فرانت (تیره سبز-آبی) + "50": "210 215 215", # #D2D7D7 + "100": "151 163 164", # #97A3A4 + "200": "108 125 127", # #6C7D7F + "300": "44 69 72", # #2C4548 + "400": "1 31 34", # #011F22 + "500": "1 22 24", # #011618 - پس‌زمینه اصلی + "600": "1 19 21", # #011315 + "700": "0 15 17", + "800": "0 12 14", + "900": "0 8 10", + "950": "0 4 5", + }, + "font": { + "subtle-light": "var(--color-base-500)", + "subtle-dark": "var(--color-base-400)", + "default-light": "var(--color-secondary-400)", + "default-dark": "var(--color-base-200)", + "important-light": "var(--color-base-900)", + "important-dark": "255 255 255", + }, + } + + return dovoodi_colors # Simple admin site placeholders that will be replaced after Django setup class AdminSitePlaceholder(UnfoldAdminSite):