From 943f843189f127e21bfe082897f060e659e13d47 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Mon, 14 Oct 2024 17:40:35 -0700 Subject: [PATCH] add core/admin_site --- archivebox/core/admin_site.py | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 archivebox/core/admin_site.py diff --git a/archivebox/core/admin_site.py b/archivebox/core/admin_site.py new file mode 100644 index 00000000..de92db8c --- /dev/null +++ b/archivebox/core/admin_site.py @@ -0,0 +1,42 @@ +__package__ = 'archivebox.core' + +from django.contrib import admin + +import abx.django.use + +class ArchiveBoxAdmin(admin.AdminSite): + site_header = 'ArchiveBox' + index_title = 'Admin Views' + site_title = 'Admin' + namespace = 'admin' + + +archivebox_admin = ArchiveBoxAdmin() +archivebox_admin.disable_action('delete_selected') +# TODO: https://stackoverflow.com/questions/40760880/add-custom-button-to-django-admin-panel + + + +# patch admin with methods to add data views (implemented by admin_data_views package) +# https://github.com/MrThearMan/django-admin-data-views +# https://mrthearman.github.io/django-admin-data-views/setup/ +from admin_data_views.admin import get_app_list, admin_data_index_view, get_admin_data_urls, get_urls +archivebox_admin.get_app_list = get_app_list.__get__(archivebox_admin, ArchiveBoxAdmin) +archivebox_admin.admin_data_index_view = admin_data_index_view.__get__(archivebox_admin, ArchiveBoxAdmin) # type: ignore +archivebox_admin.get_admin_data_urls = get_admin_data_urls.__get__(archivebox_admin, ArchiveBoxAdmin) # type: ignore +archivebox_admin.get_urls = get_urls(archivebox_admin.get_urls).__get__(archivebox_admin, ArchiveBoxAdmin) +############### Admin Data View sections are defined in settings.ADMIN_DATA_VIEWS ######### + + +def register_admin_site(): + """Replace the default admin site with our custom ArchiveBox admin site.""" + from django.contrib import admin + from django.contrib.admin import sites + + admin.site = archivebox_admin + sites.site = archivebox_admin + + # register all plugins admin classes + abx.django.use.register_admin(archivebox_admin) + + return archivebox_admin