mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-04-06 07:47:53 +10:00
73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
__package__ = 'archivebox.core'
|
|
|
|
from typing import TYPE_CHECKING, Any
|
|
|
|
from django.contrib import admin
|
|
from admin_data_views.admin import (
|
|
admin_data_index_view as adv_admin_data_index_view,
|
|
get_admin_data_urls as adv_get_admin_data_urls,
|
|
get_app_list as adv_get_app_list,
|
|
)
|
|
|
|
if TYPE_CHECKING:
|
|
from django.http import HttpRequest
|
|
from django.template.response import TemplateResponse
|
|
from django.urls import URLPattern, URLResolver
|
|
|
|
from admin_data_views.typing import AppDict
|
|
|
|
|
|
class ArchiveBoxAdmin(admin.AdminSite):
|
|
site_header = 'ArchiveBox'
|
|
index_title = 'Admin Views'
|
|
site_title = 'Admin'
|
|
namespace = 'admin'
|
|
|
|
def get_app_list(self, request: 'HttpRequest', app_label: str | None = None) -> list['AppDict']:
|
|
if app_label is None:
|
|
return adv_get_app_list(self, request)
|
|
return adv_get_app_list(self, request, app_label)
|
|
|
|
def admin_data_index_view(self, request: 'HttpRequest', **kwargs: Any) -> 'TemplateResponse':
|
|
return adv_admin_data_index_view(self, request, **kwargs)
|
|
|
|
def get_admin_data_urls(self) -> list['URLResolver | URLPattern']:
|
|
return adv_get_admin_data_urls(self)
|
|
|
|
def get_urls(self) -> list['URLResolver | URLPattern']:
|
|
return self.get_admin_data_urls() + super().get_urls()
|
|
|
|
|
|
archivebox_admin = ArchiveBoxAdmin()
|
|
# Note: delete_selected is enabled per-model via actions = ['delete_selected'] in each ModelAdmin
|
|
# TODO: https://stackoverflow.com/questions/40760880/add-custom-button-to-django-admin-panel
|
|
|
|
|
|
|
|
############### 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 admin views for each app
|
|
# (Previously handled by ABX plugin system, now called directly)
|
|
from archivebox.core.admin import register_admin as register_core_admin
|
|
from archivebox.crawls.admin import register_admin as register_crawls_admin
|
|
from archivebox.api.admin import register_admin as register_api_admin
|
|
from archivebox.machine.admin import register_admin as register_machine_admin
|
|
from archivebox.workers.admin import register_admin as register_workers_admin
|
|
|
|
register_core_admin(archivebox_admin)
|
|
register_crawls_admin(archivebox_admin)
|
|
register_api_admin(archivebox_admin)
|
|
register_machine_admin(archivebox_admin)
|
|
register_workers_admin(archivebox_admin)
|
|
|
|
return archivebox_admin
|