From 77e34cbf0261c2ec4fdac81a04290c6df367f578 Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Thu, 15 Sep 2022 08:52:13 +0100 Subject: [PATCH] Show number of blog posts on admin dashboard --- .../blog/blog_post_count_summary_item.html | 8 +++++++ website/blog/wagtail_hooks.py | 23 ++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 website/blog/templates/blog/blog_post_count_summary_item.html diff --git a/website/blog/templates/blog/blog_post_count_summary_item.html b/website/blog/templates/blog/blog_post_count_summary_item.html new file mode 100644 index 0000000..c31cf6e --- /dev/null +++ b/website/blog/templates/blog/blog_post_count_summary_item.html @@ -0,0 +1,8 @@ +{% load wagtailcore_tags wagtailadmin_tags %} + +
  • + {% icon name="edit" %} + + {{ posts }} Posts + +
  • diff --git a/website/blog/wagtail_hooks.py b/website/blog/wagtail_hooks.py index 4126563..4f22cc3 100644 --- a/website/blog/wagtail_hooks.py +++ b/website/blog/wagtail_hooks.py @@ -2,8 +2,9 @@ from django.http.request import HttpRequest from django.urls import reverse from wagtail import hooks from wagtail.admin.menu import MenuItem +from wagtail.admin.site_summary import SummaryItem -from .models import BlogPostTagListPage +from .models import BlogPostListPage, BlogPostTagListPage class BlogPostTagsMenuItem(MenuItem): @@ -26,6 +27,26 @@ class BlogPostTagsMenuItem(MenuItem): return bool(self.url) +class BlogPostCountSummaryItem(SummaryItem): + template_name = "blog/blog_post_count_summary_item.html" + + def is_shown(self) -> bool: + return BlogPostListPage.objects.exists() + + def get_context_data(self, parent_context: dict) -> dict: + context = super().get_context_data(parent_context) + list_page = BlogPostListPage.objects.get() + context["list_page"] = list_page + context["posts"] = list_page.get_listing_pages().count() + + return context + + @hooks.register("register_admin_menu_item") def register_blog_post_tags_menu_item() -> MenuItem: return BlogPostTagsMenuItem() + + +@hooks.register("construct_homepage_summary_items") +def register_blog_post_count_summary_item(request: HttpRequest, panels: list) -> None: + panels.append(BlogPostCountSummaryItem(request))