mirror of
https://github.com/house-of-vanity/OutFleet.git
synced 2025-08-21 14:37:16 +00:00
110 lines
4.0 KiB
Python
110 lines
4.0 KiB
Python
from django.apps import AppConfig
|
|
from django.contrib.auth import get_user_model
|
|
|
|
class VPN(AppConfig):
|
|
default_auto_field = 'django.db.models.BigAutoField'
|
|
name = 'vpn'
|
|
|
|
def ready(self):
|
|
"""Import signals when Django starts"""
|
|
import sys
|
|
import logging
|
|
logger = logging.getLogger(__name__)
|
|
|
|
logger.info(f"VPN App ready() called in process: {' '.join(sys.argv)}")
|
|
|
|
try:
|
|
import vpn.signals # noqa
|
|
except ImportError:
|
|
pass
|
|
|
|
# Only load admin interfaces in web processes, not in worker/beat
|
|
skip_admin_load = any([
|
|
'worker' in sys.argv,
|
|
'beat' in sys.argv,
|
|
'makemigrations' in sys.argv,
|
|
'migrate' in sys.argv,
|
|
'shell' in sys.argv,
|
|
'test' in sys.argv,
|
|
])
|
|
|
|
if not skip_admin_load:
|
|
logger.info("VPN App: Loading admin interfaces in web process")
|
|
# Force load admin interfaces first
|
|
self._load_admin_interfaces()
|
|
|
|
# Clean up unwanted admin interfaces
|
|
self._cleanup_admin_interfaces()
|
|
else:
|
|
logger.info("VPN App: Skipping admin loading in non-web process")
|
|
|
|
def _cleanup_admin_interfaces(self):
|
|
"""Remove unwanted admin interfaces after all apps are loaded"""
|
|
from django.contrib import admin
|
|
import logging
|
|
logger = logging.getLogger(__name__)
|
|
|
|
logger.info("VPN App: Starting admin cleanup...")
|
|
|
|
try:
|
|
from django_celery_results.models import GroupResult
|
|
from django_celery_beat.models import (
|
|
PeriodicTask,
|
|
ClockedSchedule,
|
|
CrontabSchedule,
|
|
IntervalSchedule,
|
|
SolarSchedule
|
|
)
|
|
from django.contrib.auth.models import Group
|
|
|
|
# Unregister celery models that we don't want in admin
|
|
models_to_unregister = [
|
|
GroupResult, PeriodicTask, ClockedSchedule,
|
|
CrontabSchedule, IntervalSchedule, SolarSchedule
|
|
]
|
|
|
|
for model in models_to_unregister:
|
|
try:
|
|
admin.site.unregister(model)
|
|
logger.info(f"VPN App: Unregistered {model.__name__}")
|
|
except admin.sites.NotRegistered:
|
|
logger.debug(f"VPN App: {model.__name__} was not registered, skipping")
|
|
|
|
# Unregister Django's default Group model
|
|
try:
|
|
admin.site.unregister(Group)
|
|
logger.info("VPN App: Unregistered Django Group model")
|
|
except admin.sites.NotRegistered:
|
|
logger.debug("VPN App: Django Group was not registered, skipping")
|
|
|
|
except ImportError as e:
|
|
# Celery packages not installed
|
|
logger.warning(f"VPN App: Celery packages not available: {e}")
|
|
|
|
logger.info("VPN App: Admin cleanup completed")
|
|
|
|
def _load_admin_interfaces(self):
|
|
"""Force load admin interfaces to ensure they are registered"""
|
|
import logging
|
|
logger = logging.getLogger(__name__)
|
|
|
|
logger.info("VPN App: Force loading admin interfaces...")
|
|
|
|
try:
|
|
# Import admin module to trigger registration
|
|
import sys
|
|
if 'vpn.admin_minimal' in sys.modules:
|
|
# Module already imported, remove it to force fresh import
|
|
del sys.modules['vpn.admin_minimal']
|
|
logger.info("VPN App: Removed vpn.admin_minimal from cache")
|
|
|
|
import vpn.admin_minimal
|
|
logger.info("VPN App: Successfully loaded vpn.admin_minimal")
|
|
|
|
except Exception as e:
|
|
logger.error(f"VPN App: Failed to load vpn.admin: {e}")
|
|
import traceback
|
|
logger.error(f"VPN App: Traceback: {traceback.format_exc()}")
|
|
|
|
logger.info("VPN App: Admin loading completed")
|