admin_site.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. __package__ = 'archivebox.core'
  2. from django.contrib import admin
  3. import archivebox
  4. class ArchiveBoxAdmin(admin.AdminSite):
  5. site_header = 'ArchiveBox'
  6. index_title = 'Admin Views'
  7. site_title = 'Admin'
  8. namespace = 'admin'
  9. archivebox_admin = ArchiveBoxAdmin()
  10. # Note: delete_selected is enabled per-model via actions = ['delete_selected'] in each ModelAdmin
  11. # TODO: https://stackoverflow.com/questions/40760880/add-custom-button-to-django-admin-panel
  12. # patch admin with methods to add data views (implemented by admin_data_views package)
  13. # https://github.com/MrThearMan/django-admin-data-views
  14. # https://mrthearman.github.io/django-admin-data-views/setup/
  15. from admin_data_views.admin import get_app_list, admin_data_index_view, get_admin_data_urls, get_urls
  16. archivebox_admin.get_app_list = get_app_list.__get__(archivebox_admin, ArchiveBoxAdmin)
  17. archivebox_admin.admin_data_index_view = admin_data_index_view.__get__(archivebox_admin, ArchiveBoxAdmin) # type: ignore
  18. archivebox_admin.get_admin_data_urls = get_admin_data_urls.__get__(archivebox_admin, ArchiveBoxAdmin) # type: ignore
  19. archivebox_admin.get_urls = get_urls(archivebox_admin.get_urls).__get__(archivebox_admin, ArchiveBoxAdmin)
  20. ############### Admin Data View sections are defined in settings.ADMIN_DATA_VIEWS #########
  21. def register_admin_site():
  22. """Replace the default admin site with our custom ArchiveBox admin site."""
  23. from django.contrib import admin
  24. from django.contrib.admin import sites
  25. admin.site = archivebox_admin
  26. sites.site = archivebox_admin
  27. # Register admin views for each app
  28. # (Previously handled by ABX plugin system, now called directly)
  29. from archivebox.core.admin import register_admin as register_core_admin
  30. from archivebox.crawls.admin import register_admin as register_crawls_admin
  31. from archivebox.api.admin import register_admin as register_api_admin
  32. from archivebox.machine.admin import register_admin as register_machine_admin
  33. from archivebox.workers.admin import register_admin as register_workers_admin
  34. register_core_admin(archivebox_admin)
  35. register_crawls_admin(archivebox_admin)
  36. register_api_admin(archivebox_admin)
  37. register_machine_admin(archivebox_admin)
  38. register_workers_admin(archivebox_admin)
  39. return archivebox_admin