From 47980032b013f07836a925c9b86375f53d6d9ae9 Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Sun, 28 Aug 2022 16:18:31 +0100 Subject: [PATCH] Add autocomplete for blog pots tags --- requirements/base.in | 3 +++ requirements/base.txt | 3 ++- requirements/dev.txt | 3 ++- website/blog/models.py | 11 ++++++++--- website/settings.py | 1 + website/urls.py | 2 ++ 6 files changed, 18 insertions(+), 5 deletions(-) diff --git a/requirements/base.in b/requirements/base.in index 6dabc97..d6b0533 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -21,3 +21,6 @@ drf-yasg django-plausible sentry-sdk wagtail-favicon + +# Pinned due to lack of Wagtail 3 support +git+https://github.com/wagtail/wagtail-autocomplete@03f46a0c256989690d0a43fc21fe0f37f9ede765 diff --git a/requirements/base.txt b/requirements/base.txt index e329a78..a230cc6 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -61,7 +61,8 @@ tablib[xls,xlsx]==3.2.1 # via wagtail telepath==0.2 # via wagtail uritemplate==4.1.1 # via coreapi, drf-yasg urllib3==1.26.11 # via requests, sentry-sdk -wagtail==3.0.1 # via -r requirements/base.in, wagtail-draftail-snippet, wagtail-metadata +wagtail==3.0.1 # via -r requirements/base.in, wagtail-autocomplete, wagtail-draftail-snippet, wagtail-metadata +wagtail-autocomplete @ git+https://github.com/wagtail/wagtail-autocomplete@03f46a0c256989690d0a43fc21fe0f37f9ede765 # via -r requirements/base.in wagtail-draftail-snippet==0.4.1 # via -r requirements/base.in wagtail-favicon==0.2.0 # via -r requirements/base.in wagtail-generic-chooser==0.4.1 # via -r requirements/base.in diff --git a/requirements/dev.txt b/requirements/dev.txt index 4807f61..1489170 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -90,7 +90,8 @@ types-urllib3==1.26.17 # via types-requests typing-extensions==4.3.0 # via mypy uritemplate==4.1.1 # via -r requirements/base.txt, coreapi, drf-yasg urllib3==1.26.11 # via -r requirements/base.txt, requests, sentry-sdk -wagtail==3.0.1 # via -r requirements/base.txt, wagtail-draftail-snippet, wagtail-factories, wagtail-metadata +wagtail==3.0.1 # via -r requirements/base.txt, wagtail-autocomplete, wagtail-draftail-snippet, wagtail-factories, wagtail-metadata +wagtail-autocomplete @ git+https://github.com/wagtail/wagtail-autocomplete@03f46a0c256989690d0a43fc21fe0f37f9ede765 # via -r requirements/base.txt wagtail-draftail-snippet==0.4.1 # via -r requirements/base.txt wagtail-factories==3.1.0 # via -r requirements/dev.in wagtail-favicon==0.2.0 # via -r requirements/base.txt diff --git a/website/blog/models.py b/website/blog/models.py index 6eafd57..7eef6c6 100644 --- a/website/blog/models.py +++ b/website/blog/models.py @@ -6,6 +6,7 @@ from django.utils import timezone from django.utils.functional import cached_property from modelcluster.fields import ParentalManyToManyField from wagtail.admin.panels import FieldPanel +from wagtailautocomplete.edit_handlers import AutocompletePanel from website.common.models import BaseContentPage, BaseListingPage from website.common.utils import TocEntry, prefetch_for_listing @@ -38,7 +39,10 @@ class BlogPostListPage(BaseListingPage): def get_listing_pages(self) -> models.QuerySet: return prefetch_for_listing( - BlogPostPage.objects.descendant_of(self).live().order_by("-date", "title").prefetch_related("tags") + BlogPostPage.objects.descendant_of(self) + .live() + .order_by("-date", "title") + .prefetch_related("tags") ) @property @@ -57,7 +61,7 @@ class BlogPostPage(BaseContentPage): content_panels = BaseContentPage.content_panels + [ FieldPanel("date"), - FieldPanel("tags"), + AutocompletePanel("tags"), ] @@ -114,7 +118,8 @@ class BlogPostCollectionPage(BaseListingPage): def get_listing_pages(self) -> models.QuerySet: return prefetch_for_listing( - BlogPostPage.objects.child_of(self).live() + BlogPostPage.objects.child_of(self) + .live() .prefetch_related("tags") .order_by("-date", "title") ) diff --git a/website/settings.py b/website/settings.py index 41003eb..3fdd7c9 100644 --- a/website/settings.py +++ b/website/settings.py @@ -61,6 +61,7 @@ INSTALLED_APPS = [ "taggit", "generic_chooser", "wagtail_draftail_snippet", + "wagtailautocomplete", "django_rq", "drf_yasg", "wagtail_favicon", diff --git a/website/urls.py b/website/urls.py index ed864f6..d9a50cf 100644 --- a/website/urls.py +++ b/website/urls.py @@ -7,10 +7,12 @@ from wagtail.contrib.sitemaps.views import sitemap from wagtail.documents import urls as wagtaildocs_urls from wagtail.images.views.serve import ServeView from wagtail_favicon.urls import urls as favicon_urls +from wagtailautocomplete.urls.admin import urlpatterns as autocomplete_admin_urls from website.common.views import AllPagesFeed, KeybaseView, RobotsView, page_not_found urlpatterns = [ + path("admin/autocomplete/", include(autocomplete_admin_urls)), path("admin/", include(wagtailadmin_urls)), path("documents/", include(wagtaildocs_urls)), path(