Добавление кнопки пользовательских действий в сниппеты wagtail
Я пытался найти в документации информацию о том, как добавить пользовательские кнопки действий для сниппетов трясогузки. Пока безуспешно.
Моя версия трясогузки - 6.1.3
Это мой класс сниппетов.
class CurrentDayForecastViewSet(SnippetViewSet):
model = CurrentDayForecast
menu_label = 'Current Day Forecast'
list_display = ('forecast_title', 'forecast_date', 'town')
search_fields = ('forecast_title', 'forecast_date', 'town')
panels = [
FieldPanel('forecast_title'),
MultiFieldPanel([
FieldPanel('forecast_date', classname='col6'),
FieldPanel('town', classname='col6'),
FieldPanel('min_temperature', classname='col6'),
FieldPanel('max_temperature', classname='col6'),
], heading="Forecast Details", classname='col12'),
MultiFieldPanel(
[
FieldPanel('weather_condition_5AM', classname='col4'),
FieldPanel('wind_direction_5AM', classname='col4'),
FieldPanel('wind_speed_5AM', classname='col4'),
],
heading='5AM',
classname='collapsible col12'
),
MultiFieldPanel(
[
FieldPanel('weather_condition_12PM', classname='col4'),
FieldPanel('wind_direction_12PM', classname='col4'),
FieldPanel('wind_speed_12PM', classname='col4'),
],
heading='12PM',
classname='collapsible col12'
),
MultiFieldPanel(
[
FieldPanel('weather_condition_5PM', classname='col4'),
FieldPanel('wind_direction_5PM', classname='col4'),
FieldPanel('wind_speed_5PM', classname='col4'),
],
heading='5PM',
classname='collapsible col12'
),
MultiFieldPanel(
[
FieldPanel('weather_condition_9PM', classname='col4'),
FieldPanel('wind_direction_9PM', classname='col4'),
FieldPanel('wind_speed_9PM', classname='col4'),
],
heading='9PM',
classname='collapsible col12'
),
]
По умолчанию в выпадающем списке действий есть «редактировать, копировать, удалить». Мне нужно добавить пользовательскую кнопку действия только для этого фрагмента, чтобы запустить некоторую пользовательскую логику.
Буду благодарен, если кто-нибудь укажет мне правильное направление.
Используйте крючок register_snippet_listing_buttons
. Из документации (добавляется в файл wagtail_hooks.py
в любом приложении):
from wagtail import hooks
from wagtail.snippets import widgets as wagtailsnippets_widgets
@hooks.register('register_snippet_listing_buttons')
def snippet_listing_buttons(snippet, user, next_url=None):
yield wagtailsnippets_widgets.SnippetListingButton(
'A page listing button',
'/goes/to/a/url/',
priority=10
)