Browse Source

admin login form style fixed.

master
Mohsen Taba 5 months ago
parent
commit
99f09357ec
  1. 2
      config/__init__.py
  2. 36
      utils/admin.py

2
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',)

36
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"

Loading…
Cancel
Save