From 6aeb763fb1b7b234e05cd3a7988703ebad423e7f Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Mon, 31 Aug 2015 16:44:57 +0200 Subject: [PATCH] Don't crash on redirect when multiple CFs are inprogress or open This is an incorrect state, but we shouldn't crash anyway. Instead show an error message and redirect to the root page. Reported by Bruce Momjian --- pgcommitfest/commitfest/views.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pgcommitfest/commitfest/views.py b/pgcommitfest/commitfest/views.py index 02567f3..93bd421 100644 --- a/pgcommitfest/commitfest/views.py +++ b/pgcommitfest/commitfest/views.py @@ -80,13 +80,20 @@ def activity(request, cfid=None, rss=None): def redir(request, what): if what == 'open': - cf = get_object_or_404(CommitFest, status=CommitFest.STATUS_OPEN) + cfs = list(CommitFest.objects.filter(status=CommitFest.STATUS_OPEN)) elif what == 'inprogress': - cf = get_object_or_404(CommitFest, status=CommitFest.STATUS_INPROGRESS) + cfs = list(CommitFest.objects.filter(status=CommitFest.STATUS_INPROGRESS)) else: raise Http404() - return HttpResponseRedirect("/%s/" % cf.id) + if len(cfs) == 0: + messages.warning(request, "No {0} commitfests exist, redirecting to startpage.".format(what)) + return HttpResponseRedirect("/") + if len(cfs) != 1: + messages.warning(request, "More than one {0} commitfest exists, redirecting to startpage instead.".format(what)) + return HttpResponseRedirect("/") + + return HttpResponseRedirect("/%s/" % cfs[0].id) def commitfest(request, cfid): # Find ourselves -- 2.39.5