Add dedicated favicon view
This commit is contained in:
parent
7105386e61
commit
96a6ded02e
3 changed files with 24 additions and 3 deletions
|
@ -16,7 +16,7 @@ class Error404PageTestCase(TestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_actual_404_no_url_match(self) -> None:
|
def test_actual_404_no_url_match(self) -> None:
|
||||||
response = self.client.get("/favicon.ico")
|
response = self.client.get("/missing.file")
|
||||||
self.assertContains(
|
self.assertContains(
|
||||||
response, "<h1>There's nothing here!</h1>", html=True, status_code=404
|
response, "<h1>There's nothing here!</h1>", html=True, status_code=404
|
||||||
)
|
)
|
||||||
|
|
|
@ -9,9 +9,11 @@ from django.urls import reverse
|
||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
from django.views.decorators.cache import cache_control, cache_page
|
from django.views.decorators.cache import cache_control, cache_page
|
||||||
from django.views.defaults import ERROR_404_TEMPLATE_NAME
|
from django.views.defaults import ERROR_404_TEMPLATE_NAME
|
||||||
from django.views.generic import TemplateView
|
from django.views.generic import RedirectView, TemplateView
|
||||||
from wagtail.models import Page
|
from wagtail.models import Page
|
||||||
from wagtail.query import PageQuerySet
|
from wagtail.query import PageQuerySet
|
||||||
|
from wagtail_favicon.models import FaviconSettings
|
||||||
|
from wagtail_favicon.utils import get_rendition_url
|
||||||
|
|
||||||
from website.common.utils import get_site_title
|
from website.common.utils import get_site_title
|
||||||
from website.contrib.singleton_page.utils import SingletonPageCache
|
from website.contrib.singleton_page.utils import SingletonPageCache
|
||||||
|
@ -139,3 +141,15 @@ class ContentPageFeed(AllPagesFeed):
|
||||||
|
|
||||||
def items(self) -> PageQuerySet:
|
def items(self) -> PageQuerySet:
|
||||||
return self.posts
|
return self.posts
|
||||||
|
|
||||||
|
|
||||||
|
@method_decorator(cache_control(max_age=60 * 60), name="dispatch")
|
||||||
|
class FaviconView(RedirectView):
|
||||||
|
def get_redirect_url(self) -> str:
|
||||||
|
favicon_settings = FaviconSettings.for_request(self.request)
|
||||||
|
size = FaviconSettings.icon_sizes[0]
|
||||||
|
|
||||||
|
# Force image to PNG
|
||||||
|
return get_rendition_url(
|
||||||
|
favicon_settings.base_favicon_image, f"fill-{size}|format-png"
|
||||||
|
)
|
||||||
|
|
|
@ -14,7 +14,13 @@ from wagtail.images.views.serve import ServeView
|
||||||
from wagtail_favicon.urls import urls as favicon_urls
|
from wagtail_favicon.urls import urls as favicon_urls
|
||||||
from wagtailautocomplete.urls.admin import urlpatterns as autocomplete_admin_urls
|
from wagtailautocomplete.urls.admin import urlpatterns as autocomplete_admin_urls
|
||||||
|
|
||||||
from website.common.views import AllPagesFeed, KeybaseView, RobotsView, page_not_found
|
from website.common.views import (
|
||||||
|
AllPagesFeed,
|
||||||
|
FaviconView,
|
||||||
|
KeybaseView,
|
||||||
|
RobotsView,
|
||||||
|
page_not_found,
|
||||||
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("admin/autocomplete/", include(autocomplete_admin_urls)),
|
path("admin/autocomplete/", include(autocomplete_admin_urls)),
|
||||||
|
@ -49,6 +55,7 @@ urlpatterns = [
|
||||||
"@jake",
|
"@jake",
|
||||||
RedirectView.as_view(url=f"https://{settings.ACTIVITYPUB_HOST}/@jake"),
|
RedirectView.as_view(url=f"https://{settings.ACTIVITYPUB_HOST}/@jake"),
|
||||||
),
|
),
|
||||||
|
path("favicon.ico", FaviconView.as_view()),
|
||||||
path("", include(favicon_urls)),
|
path("", include(favicon_urls)),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue