From 3bb590c1ae3bfaa15577f49139dae2c148604af2 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 8 Aug 2022 10:01:50 +0200 Subject: [PATCH] Ensure /favicon.ico does not raise Resolver404 on custom domains --- src/pretix/presale/urls.py | 7 +++++++ src/pretix/presale/views/organizer.py | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/pretix/presale/urls.py b/src/pretix/presale/urls.py index 7d03beae59..db39986e0b 100644 --- a/src/pretix/presale/urls.py +++ b/src/pretix/presale/urls.py @@ -93,6 +93,10 @@ event_patterns = [ name='event.payment.unlock'), re_path(r'resend/$', pretix.presale.views.user.ResendLinkView.as_view(), name='event.resend_link'), + re_path(r'^favicon.ico/?$', + pretix.presale.views.organizer.OrganizerFavicon.as_view(), + name='event.favicon'), + re_path(r'^order/(?P[^/]+)/(?P[A-Za-z0-9]+)/open/(?P[a-z0-9]+)/$', pretix.presale.views.order.OrderOpen.as_view(), name='event.order.open'), re_path(r'^order/(?P[^/]+)/(?P[A-Za-z0-9]+)/$', pretix.presale.views.order.OrderDetails.as_view(), @@ -164,6 +168,9 @@ event_patterns = [ organizer_patterns = [ re_path(r'^$', pretix.presale.views.organizer.OrganizerIndex.as_view(), name='organizer.index'), + re_path(r'^favicon.ico/?$', + pretix.presale.views.organizer.OrganizerFavicon.as_view(), + name='organizer.favicon'), re_path(r'^events/ical/$', pretix.presale.views.organizer.OrganizerIcalDownload.as_view(), name='organizer.ical'), diff --git a/src/pretix/presale/views/organizer.py b/src/pretix/presale/views/organizer.py index 1a5d96ee9a..f76d78eccb 100644 --- a/src/pretix/presale/views/organizer.py +++ b/src/pretix/presale/views/organizer.py @@ -48,6 +48,7 @@ from django.db.models import Exists, Max, Min, OuterRef, Prefetch, Q from django.db.models.functions import Coalesce, Greatest from django.http import Http404, HttpResponse from django.shortcuts import redirect +from django.templatetags.static import static from django.utils.decorators import method_decorator from django.utils.formats import date_format, get_format from django.utils.timezone import get_current_timezone, now @@ -66,6 +67,7 @@ from pretix.helpers.daterange import daterange from pretix.helpers.formats.en.formats import ( SHORT_MONTH_DAY_FORMAT, WEEK_FORMAT, ) +from pretix.helpers.thumb import get_thumbnail from pretix.multidomain.urlreverse import eventreverse from pretix.presale.ical import get_public_ical from pretix.presale.views import OrganizerViewMixin @@ -1170,3 +1172,11 @@ class OrganizerIcalDownload(OrganizerViewMixin, View): if request.organizer.settings.meta_noindex: resp['X-Robots-Tag'] = 'noindex' return resp + + +class OrganizerFavicon(View): + def get(self, *args, **kwargs): + if self.request.organizer.settings.favicon: + return redirect(get_thumbnail(self.request.organizer.settings.favicon, '32x32^').thumb.url) + else: + return redirect(static("pretixbase/img/favicon.ico"))