58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
from django.utils.translation import gettext_lazy as _
|
|
from wagtail.admin.ui.tables import Column, DateColumn
|
|
from wagtail.admin.ui.tables.pages import PageStatusColumn, PageTitleColumn
|
|
from wagtail.admin.viewsets.pages import PageListingViewSet, PageViewSet
|
|
|
|
from associations.models import AssociationPage
|
|
from dnscms.admin import ListingRedirectChooseParentView
|
|
|
|
|
|
class AssociationTypeColumn(Column):
|
|
def get_value(self, instance):
|
|
return instance.get_association_type_display()
|
|
|
|
|
|
class AssociationChooseParentView(ListingRedirectChooseParentView):
|
|
listing_url_name = "associations:index"
|
|
|
|
|
|
class AssociationListingMixin:
|
|
"""Shared model + columns for the standalone listing and the page explorer."""
|
|
|
|
model = AssociationPage
|
|
icon = "group"
|
|
columns = [
|
|
PageTitleColumn("title", label=_("Title"), sort_key="title", classname="title"),
|
|
AssociationTypeColumn(
|
|
"association_type",
|
|
label=_("Type"),
|
|
sort_key="association_type",
|
|
width="15%",
|
|
),
|
|
DateColumn(
|
|
"latest_revision_created_at",
|
|
label=_("Updated"),
|
|
sort_key="latest_revision_created_at",
|
|
width="10%",
|
|
),
|
|
PageStatusColumn("status", label=_("Status"), sort_key="live", width="10%"),
|
|
]
|
|
|
|
|
|
class AssociationSidebarViewSet(AssociationListingMixin, PageListingViewSet):
|
|
"""Standalone 'Associations' sidebar entry, reached independently of the page tree."""
|
|
|
|
choose_parent_view_class = AssociationChooseParentView
|
|
menu_label = _("Associations")
|
|
menu_order = 2
|
|
add_to_admin_menu = True
|
|
ordering = "title"
|
|
|
|
|
|
class AssociationExplorerViewSet(AssociationListingMixin, PageViewSet):
|
|
"""Applies the same columns when navigating into AssociationIndex via the page explorer."""
|
|
|
|
|
|
association_sidebar_viewset = AssociationSidebarViewSet("associations")
|
|
association_explorer_viewset = AssociationExplorerViewSet()
|