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