Skip to content
Snippets Groups Projects
views.py 870 B
Newer Older
  • Learn to ignore specific revisions
  • from django.http import Http404
    
    from AKModel.models import Event
    
    
    class FilterByEventSlugMixin:
        """
        Mixin to filter different querysets based on a event slug from the request url
        """
        event = None
    
        def get_queryset(self):
            # Find event based on event slug
            try:
                self.event = Event.get_by_slug(self.kwargs.get("event_slug", None))
            except Event.DoesNotExist:
                raise Http404
    
            # Filter current queryset based on url event slug or return 404 if event slug is invalid
            return super().get_queryset().filter(event=self.event)
    
        def get_context_data(self, *, object_list=None, **kwargs):
            context = super().get_context_data(object_list=object_list, **kwargs)
            # Add event to context (to make it accessible in templates)
            context["event"] = self.event
            return context