Трясогузка: как удалить сводные данные на главной странице администратора - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь удалить / настроить сводные элементы на главной странице администратора с помощью рекомендуемого крючка construct_homepage_summary_items.

Добавьте или удалите элементы из панели «Сводка по сайту» на главной странице администратора (которая показывает количество страниц и других объектов, существующих на сайте).

Мне удается добавить свои собственные элементы, но с трудом удается удалить все элементы по умолчанию.

@hooks.register("construct_homepage_summary_items")
def add_my_summary_items(request, items):
    items.append(MySummaryItem(request))
    items.pop(0)

items включает только мои пользовательские элементы и wagtail.admin.site_summary.PagesSummaryItem, но не элементы для изображений и документов. Удаление элементов с pop тоже не кажется таким элегантным, как могло бы быть. Я надеялся найти какой-нибудь путь по строкам хука construct_main_menu:

menu_items[:] = [item for item in menu_items if item.name != 'explorer']

Но я не смог найти идентификатор имени или его эквивалент. Как мне go узнать об этом?

1 Ответ

0 голосов
/ 18 июня 2020

Это работает? Он должен удалить все сводные элементы.

@hooks.register("construct_homepage_summary_items")
def remove_all_summary_items(request, items):
    items.clear()

Обновление

Если вам нужно, чтобы ваши хуки запускались в определенном порядке, вы можете передать параметр порядка.

@hooks.register('name_of_hook', order=1)  # This will run after every hook in the wagtail core
def my_hook_function(arg1, arg2...)
    # your code here

Кажется, что хук элемента страницы выполняется до вашего хука, а элементы изображения и документа - после него. Это меня удивляет, поскольку было бы логичным, чтобы все хуки Wagtail запускались одновременно: перед любым пользовательским кодом.

Порядок приложений также влияет на порядок выполнения. В качестве альтернативы параметру order вы можете создать новое приложение (с именем hooks?) И разместить его после приложений Wagtail в INSTALLED_APPS. Нужны только файлы __init__.py и wagtail_hooks.py. Крючки в этом приложении будут выполняться после крючков Wagtail. Страница, до c и изображения находятся в элементах и ​​могут быть удалены.

from wagtail.core import hooks

@hooks.register("construct_homepage_summary_items")
def remove_all_summary_items(request, items):
    items.clear()
    items.append(YourSummaryItem)
...