Initial commit
This commit is contained in:
174
env/lib/python3.10/site-packages/wagtail/admin/ui/tables/pages.py
vendored
Normal file
174
env/lib/python3.10/site-packages/wagtail/admin/ui/tables/pages.py
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import gettext
|
||||
|
||||
from wagtail.admin.ui.tables import BaseColumn, BulkActionsCheckboxColumn, Column, Table
|
||||
|
||||
|
||||
class PageTitleColumn(BaseColumn):
|
||||
header_template_name = "wagtailadmin/pages/listing/_page_title_column_header.html"
|
||||
cell_template_name = "wagtailadmin/pages/listing/_page_title_cell.html"
|
||||
classname = "title"
|
||||
|
||||
def get_header_context_data(self, parent_context):
|
||||
context = super().get_header_context_data(parent_context)
|
||||
parent_page = parent_context.get("parent_page")
|
||||
|
||||
context["items_count"] = parent_context.get("items_count")
|
||||
context["page_obj"] = parent_context.get("page_obj")
|
||||
context["parent_page"] = parent_page
|
||||
|
||||
if parent_page and (
|
||||
parent_context.get("is_searching") or parent_context.get("is_filtering")
|
||||
):
|
||||
# Results are switchable between searching the whole tree and searching just this parent.
|
||||
# Add extra signposting to show which scope we're in, and provide a link to switch scope.
|
||||
if parent_context.get("is_searching_whole_tree"):
|
||||
context["result_scope"] = "whole_tree"
|
||||
else:
|
||||
context["result_scope"] = "parent"
|
||||
else:
|
||||
# No signposting needed
|
||||
context["result_scope"] = None
|
||||
|
||||
# If results are not paginated e.g. when using the OrderingColumn,
|
||||
# all items are displayed on the page
|
||||
context["start_index"] = 1
|
||||
context["end_index"] = context["items_count"]
|
||||
if context["page_obj"]:
|
||||
context["start_index"] = context["page_obj"].start_index()
|
||||
context["end_index"] = context["page_obj"].end_index()
|
||||
|
||||
return context
|
||||
|
||||
def get_cell_context_data(self, instance, parent_context):
|
||||
context = super().get_cell_context_data(instance, parent_context)
|
||||
context["page_perms"] = instance.permissions_for_user(
|
||||
parent_context["request"].user
|
||||
)
|
||||
context["parent_page"] = getattr(instance, "annotated_parent_page", None)
|
||||
context["show_locale_labels"] = parent_context.get("show_locale_labels")
|
||||
context["perms"] = parent_context.get("perms")
|
||||
context["actions_next_url"] = parent_context.get("actions_next_url")
|
||||
return context
|
||||
|
||||
|
||||
class ParentPageColumn(Column):
|
||||
cell_template_name = "wagtailadmin/pages/listing/_parent_page_cell.html"
|
||||
|
||||
def get_value(self, instance):
|
||||
return instance.get_parent()
|
||||
|
||||
|
||||
class PageStatusColumn(BaseColumn):
|
||||
cell_template_name = "wagtailadmin/pages/listing/_page_status_cell.html"
|
||||
|
||||
|
||||
class BulkActionsColumn(BulkActionsCheckboxColumn):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs, obj_type="page")
|
||||
|
||||
def get_header_context_data(self, parent_context):
|
||||
context = super().get_header_context_data(parent_context)
|
||||
parent_page = parent_context.get("parent_page")
|
||||
if parent_page:
|
||||
context["parent"] = parent_page.id
|
||||
return context
|
||||
|
||||
|
||||
class OrderingColumn(BaseColumn):
|
||||
header_template_name = "wagtailadmin/pages/listing/_ordering_header.html"
|
||||
cell_template_name = "wagtailadmin/pages/listing/_ordering_cell.html"
|
||||
|
||||
|
||||
class NavigateToChildrenColumn(BaseColumn):
|
||||
cell_template_name = "wagtailadmin/pages/listing/_navigation_explore.html"
|
||||
|
||||
def get_cell_context_data(self, instance, parent_context):
|
||||
context = super().get_cell_context_data(instance, parent_context)
|
||||
context["page"] = instance
|
||||
context["page_perms"] = instance.permissions_for_user(
|
||||
parent_context["request"].user
|
||||
)
|
||||
return context
|
||||
|
||||
def render_header_html(self, parent_context):
|
||||
return mark_safe("<th></th>")
|
||||
|
||||
|
||||
class PageTable(Table):
|
||||
def __init__(
|
||||
self,
|
||||
*args,
|
||||
use_row_ordering_attributes=False,
|
||||
parent_page=None,
|
||||
show_locale_labels=False,
|
||||
actions_next_url=None,
|
||||
**kwargs,
|
||||
):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
# If true, attributes will be added on the <tr> element to support reordering
|
||||
self.use_row_ordering_attributes = use_row_ordering_attributes
|
||||
|
||||
# The parent page of the pages being listed - used to add extra context to the title text
|
||||
# of the reordering links. Leave this undefined if the pages being listed do not share a
|
||||
# common parent.
|
||||
self.parent_page = parent_page
|
||||
if self.parent_page:
|
||||
# Use more detailed title text that mentions the parent page, if we have one and the
|
||||
# current strings have not been overridden from Table's default
|
||||
if self.ascending_title_text_format == Table.ascending_title_text_format:
|
||||
self.ascending_title_text_format = gettext(
|
||||
"Sort the order of child pages within '%(parent)s' by '%(label)s' in ascending order."
|
||||
)
|
||||
if self.descending_title_text_format == Table.descending_title_text_format:
|
||||
self.descending_title_text_format = gettext(
|
||||
"Sort the order of child pages within '%(parent)s' by '%(label)s' in descending order."
|
||||
)
|
||||
|
||||
self.show_locale_labels = show_locale_labels
|
||||
self.actions_next_url = actions_next_url
|
||||
|
||||
def get_ascending_title_text(self, column):
|
||||
return self.ascending_title_text_format % {
|
||||
"parent": self.parent_page and self.parent_page.get_admin_display_title(),
|
||||
"label": column.label,
|
||||
}
|
||||
|
||||
def get_descending_title_text(self, column):
|
||||
return self.descending_title_text_format % {
|
||||
"parent": self.parent_page and self.parent_page.get_admin_display_title(),
|
||||
"label": column.label,
|
||||
}
|
||||
|
||||
def get_row_classname(self, instance):
|
||||
if not instance.live:
|
||||
return "unpublished"
|
||||
else:
|
||||
return ""
|
||||
|
||||
def get_row_attrs(self, instance):
|
||||
attrs = super().get_row_attrs(instance)
|
||||
if self.use_row_ordering_attributes:
|
||||
attrs["id"] = "page_%d" % instance.id
|
||||
attrs["data-w-orderable-item-id"] = instance.id
|
||||
attrs["data-w-orderable-item-label"] = instance.get_admin_display_title()
|
||||
attrs["data-w-orderable-target"] = "item"
|
||||
return attrs
|
||||
|
||||
def get_context_data(self, parent_context):
|
||||
context = super().get_context_data(parent_context)
|
||||
context["show_locale_labels"] = self.show_locale_labels
|
||||
context["perms"] = parent_context.get("perms")
|
||||
context["items_count"] = parent_context.get("items_count")
|
||||
context["page_obj"] = parent_context.get("page_obj")
|
||||
context["parent_page"] = parent_context.get("parent_page")
|
||||
context["is_searching"] = parent_context.get("is_searching")
|
||||
context["is_filtering"] = parent_context.get("is_filtering")
|
||||
context["is_searching_whole_tree"] = parent_context.get(
|
||||
"is_searching_whole_tree"
|
||||
)
|
||||
context["actions_next_url"] = (
|
||||
self.actions_next_url or parent_context.get("request").path
|
||||
)
|
||||
return context
|
||||
Reference in New Issue
Block a user