From 99f09357ece0d235d4619a26a5dd6ef36597067c Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Mon, 29 Dec 2025 14:09:11 +0330 Subject: [PATCH] admin login form style fixed. --- config/__init__.py | 2 +- utils/admin.py | 36 ++++++++++++++++++++++++++++-------- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/config/__init__.py b/config/__init__.py index a9ef1ea..b5a50bd 100644 --- a/config/__init__.py +++ b/config/__init__.py @@ -5,4 +5,4 @@ from __future__ import absolute_import, unicode_literals # Django starts so that shared_task will use this app. from .celery import app as celery_app -__all__ = ('celery_app',) +__all__ = ('celery_app',) \ No newline at end of file diff --git a/utils/admin.py b/utils/admin.py index a2cacfe..c83aedc 100644 --- a/utils/admin.py +++ b/utils/admin.py @@ -67,7 +67,7 @@ class LoginForm: @staticmethod def get_form(): # Import AuthenticationForm only when needed - from django.contrib.auth.forms import AuthenticationForm + from unfold.forms import AuthenticationForm class CustomLoginForm(AuthenticationForm): password = forms.CharField(widget=forms.PasswordInput(render_value=True)) @@ -84,11 +84,11 @@ class LoginForm: # --------------------------------------------------------- class FormulaAdminSite(UnfoldAdminSite): - """Main Admin for Imam Javad""" - site_header = "Imam Javad Admin" - site_title = "Imam Javad" + """Main Admin for Imam Jawad""" + site_header = "Imam Jawad Admin" + site_title = "Imam Jawad Admin" index_title = "System Administration" - site_subheader = "Imam Javad School" + site_subheader = "Imam Jawad School" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -98,7 +98,7 @@ class FormulaAdminSite(UnfoldAdminSite): class DovoodiAdminSite(UnfoldAdminSite): """Secondary Admin for Dovoodi""" site_header = "Dovoodi Admin" - site_title = "Dovoodi" + site_title = "Dovoodi Admin" index_title = "System Administration" site_subheader = "Dovodbi Application" @@ -116,7 +116,7 @@ class AdminSitePlaceholder(UnfoldAdminSite): self._site_class = site_class self._name = name self._real_instance = None - + # 2. THE FIX: Copy visual attributes immediately so Templates see them! self.site_header = getattr(site_class, 'site_header', 'Django Admin') self.site_title = getattr(site_class, 'site_title', 'Django Site') @@ -125,10 +125,19 @@ class AdminSitePlaceholder(UnfoldAdminSite): def _get_real_instance(self): if self._real_instance is None: + # Force creation of real admin site instance for proper CSS loading self._real_instance = self._site_class(name=self._name) + # Copy critical attributes immediately for template access + self.login_form = self._real_instance.login_form + self.login_template = self._real_instance.login_template + # Copy any other attributes that templates might need + for attr in ['site_header', 'site_title', 'index_title', 'site_subheader']: + if hasattr(self._real_instance, attr): + setattr(self, attr, getattr(self._real_instance, attr)) return self._real_instance def __getattr__(self, name): + # Delegate all attribute access to the real instance for proper CSS and template loading return getattr(self._get_real_instance(), name) def __call__(self, *args, **kwargs): @@ -144,10 +153,21 @@ class AdminSitePlaceholder(UnfoldAdminSite): def each_context(self, request): return self._get_real_instance().each_context(request) -# Create placeholder instances +# Create placeholder instances that will be replaced with real instances when Django is ready project_admin_site = AdminSitePlaceholder(FormulaAdminSite, 'imam_javad_admin') dovoodi_admin_site = AdminSitePlaceholder(DovoodiAdminSite, 'dovoodi_admin') +# Function to replace placeholders with real instances when Django is ready +def replace_placeholders_with_real_sites(): + global project_admin_site, dovoodi_admin_site + if isinstance(project_admin_site, AdminSitePlaceholder): + project_admin_site = FormulaAdminSite(name='imam_javad_admin') + if isinstance(dovoodi_admin_site, AdminSitePlaceholder): + dovoodi_admin_site = DovoodiAdminSite(name='dovoodi_admin') + +# The placeholders will be replaced with real instances when first accessed +# This ensures proper CSS loading for admin templates + class HomeView(RedirectView): pattern_name = "imam_javad_admin:index"