mirror of
https://github.com/mediacms-io/mediacms.git
synced 2025-07-20 16:45:32 +00:00
87 lines
3.4 KiB
Python
87 lines
3.4 KiB
Python
from django.apps import AppConfig
|
|
from django.conf import settings
|
|
from django.contrib import admin
|
|
|
|
|
|
class AdminCustomizationsConfig(AppConfig):
|
|
default_auto_field = 'django.db.models.BigAutoField'
|
|
name = 'admin_customizations'
|
|
|
|
def ready(self):
|
|
original_get_app_list = admin.AdminSite.get_app_list
|
|
|
|
def get_app_list(self, request, app_label=None):
|
|
"""Custom get_app_list"""
|
|
app_list = original_get_app_list(self, request, app_label)
|
|
# To see the list:
|
|
# print([a.get('app_label') for a in app_list])
|
|
|
|
email_model = None
|
|
rbac_group_model = None
|
|
identity_providers_user_log_model = None
|
|
identity_providers_login_option = None
|
|
auth_app = None
|
|
rbac_app = None
|
|
socialaccount_app = None
|
|
|
|
for app in app_list:
|
|
if app['app_label'] == 'users':
|
|
auth_app = app
|
|
|
|
elif app['app_label'] == 'account':
|
|
for model in app['models']:
|
|
if model['object_name'] == 'EmailAddress':
|
|
email_model = model
|
|
elif app['app_label'] == 'rbac':
|
|
if not getattr(settings, 'USE_RBAC', False):
|
|
continue
|
|
rbac_app = app
|
|
for model in app['models']:
|
|
if model['object_name'] == 'RBACGroup':
|
|
rbac_group_model = model
|
|
elif app['app_label'] == 'identity_providers':
|
|
if not getattr(settings, 'USE_IDENTITY_PROVIDERS', False):
|
|
continue
|
|
|
|
models_to_check = list(app['models'])
|
|
|
|
for model in models_to_check:
|
|
if model['object_name'] == 'IdentityProviderUserLog':
|
|
identity_providers_user_log_model = model
|
|
if model['object_name'] == 'LoginOption':
|
|
identity_providers_login_option = model
|
|
elif app['app_label'] == 'socialaccount':
|
|
socialaccount_app = app
|
|
|
|
if email_model and auth_app:
|
|
auth_app['models'].append(email_model)
|
|
if rbac_group_model and rbac_app and auth_app:
|
|
auth_app['models'].append(rbac_group_model)
|
|
if identity_providers_login_option and socialaccount_app:
|
|
socialaccount_app['models'].append(identity_providers_login_option)
|
|
if identity_providers_user_log_model and socialaccount_app:
|
|
socialaccount_app['models'].append(identity_providers_user_log_model)
|
|
|
|
# 2. don't include the following apps
|
|
apps_to_hide = ['authtoken', 'auth', 'account', 'saml_auth', 'rbac']
|
|
if not getattr(settings, 'USE_RBAC', False):
|
|
apps_to_hide.append('rbac')
|
|
if not getattr(settings, 'USE_IDENTITY_PROVIDERS', False):
|
|
apps_to_hide.append('socialaccount')
|
|
|
|
app_list = [app for app in app_list if app['app_label'] not in apps_to_hide]
|
|
|
|
# 3. change the ordering
|
|
app_order = {
|
|
'files': 1,
|
|
'users': 2,
|
|
'socialaccount': 3,
|
|
'rbac': 5,
|
|
}
|
|
|
|
app_list.sort(key=lambda x: app_order.get(x['app_label'], 999))
|
|
|
|
return app_list
|
|
|
|
admin.AdminSite.get_app_list = get_app_list
|