* Throw 404 instead of a 503 in Event Mixins if the related event does

not exist.
* Changes in the KyuDanRanking View to be more stable if we get bogus
kwargs.
This commit is contained in:
2018-01-10 02:02:35 +01:00
parent 6796b58d4c
commit 4b0a5c9c82
5 changed files with 135 additions and 17 deletions

View File

@@ -1,6 +1,6 @@
"""Mixins for Events."""
from django.http import Http404
from django.shortcuts import get_object_or_404
from . import models
@@ -34,12 +34,14 @@ class EventDetailMixin(object):
:return: TemplateContext object"""
context = super(EventDetailMixin, self).get_context_data(**kwargs)
if hasattr(self, 'event') and self.event:
if hasattr(self, 'event'):
context['event'] = self.event
elif hasattr(self, 'object') and isinstance(self.object, models.Event):
context['event'] = self.object
elif hasattr(self, 'object') and hasattr(self.object, 'event'):
context['event'] = self.object.event
else:
print("No Event in Context!")
return context
def get_queryset(self):
@@ -49,12 +51,9 @@ class EventDetailMixin(object):
:return: a django QuerySets
"""
if self.model == models.Event:
self.event = models.Event.objects.get(pk=self.kwargs['pk'])
self.event = get_object_or_404(models.Event, pk=self.kwargs['pk'])
queryset = self.model.objects.all()
else:
try:
self.event = models.Event.objects.get(pk=self.kwargs['event'])
queryset = self.model.objects.filter(event=self.event)
except models.Event.DoesNotExist:
raise Http404(_('Event does not exist'))
self.event = get_object_or_404(models.Event, pk=self.kwargs['event'])
queryset = self.model.objects.filter(event=self.event)
return queryset.prefetch_related()