From 2885ef9d5c4ce1c9c9ea66495840c57aa4cdeb63 Mon Sep 17 00:00:00 2001 From: Xeniac Date: Tue, 22 Sep 2020 19:35:09 +0200 Subject: [PATCH] fixed get_context_data() would never pull event from an Hanchan Model. --- src/events/mixins.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/events/mixins.py b/src/events/mixins.py index 814c91e..8a1f838 100644 --- a/src/events/mixins.py +++ b/src/events/mixins.py @@ -37,14 +37,14 @@ class EventDetailMixin(object): :return: TemplateContext object""" context = super(EventDetailMixin, self).get_context_data(**kwargs) - if hasattr(self, 'event'): + if getattr(self, 'event'): context['event'] = self.event - elif hasattr(self, 'object') and isinstance(self.object, models.Event): + elif isinstance(getattr(self, 'object'), models.Event): context['event'] = self.object - elif hasattr(self, 'object') and hasattr(self.object, 'event'): + elif getattr(getattr(self, 'object'), 'event'): context['event'] = self.object.event else: - print("No Event in Context!") + raise ImproperlyConfigured("No Event in Context!") return context def get_queryset(self): @@ -55,11 +55,21 @@ class EventDetailMixin(object): """ if self.model == models.Event: self.event = get_object_or_404(models.Event, pk=self.kwargs['pk']) - queryset = self.model.objects.all() - else: - self.event = get_object_or_404(models.Event, - pk=self.kwargs['event']) + queryset = self.model._default_manager.all() + elif self.kwargs.get('event'): + self.event = get_object_or_404( + models.Event, + pk=self.kwargs['event']) queryset = self.model.objects.filter(event=self.event) + elif self.model: + queryset = self.model._default_manager.all() + else: + raise ImproperlyConfigured( + "%(cls)s is missing a QuerySet. Define " + "%(cls)s.model, %(cls)s.queryset, or override " + "%(cls)s.get_queryset()." % { + 'cls': self.__class__.__name__ + }) return queryset.prefetch_related()