diff --git a/AKModel/views.py b/AKModel/views.py index 55d76b42a101e13309bccab30fde01b76d38154a..848640639bbe1c4d6863d20ba6e4bff0bb9335b3 100644 --- a/AKModel/views.py +++ b/AKModel/views.py @@ -3,24 +3,32 @@ from django.http import Http404 from AKModel.models import Event -class FilterByEventSlugMixin: +class EventSlugMixin: """ - Mixin to filter different querysets based on a event slug from the request url + Mixin to handle views with event slugs """ event = None - def get_queryset(self): + def get(self, request, *args, **kwargs): # 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) + return super().get(request, *args, **kwargs) 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 + + +class FilterByEventSlugMixin(EventSlugMixin): + """ + Mixin to filter different querysets based on a event slug from the request url + """ + + def get_queryset(self): + # Filter current queryset based on url event slug or return 404 if event slug is invalid + return super().get_queryset().filter(event=self.event) diff --git a/AKSubmission/views.py b/AKSubmission/views.py index c9109fb6ffc4f8d4b46b9a8732789755b1954610..e7aea578054d48bd8eefd33bb3ca3cd26d2c0520 100644 --- a/AKSubmission/views.py +++ b/AKSubmission/views.py @@ -5,7 +5,7 @@ from django.utils.translation import gettext_lazy as _ from django.views.generic import ListView, DetailView, CreateView from AKModel.models import AK, AKCategory, AKTag, Event -from AKModel.views import FilterByEventSlugMixin +from AKModel.views import FilterByEventSlugMixin, EventSlugMixin from AKSubmission.forms import AKForm @@ -62,7 +62,7 @@ class AKListByTagView(AKListView): return super().get_queryset().filter(tags=self.tag) -class AKSubmissionView(CreateView): +class AKSubmissionView(EventSlugMixin, CreateView): model = AK template_name = 'AKSubmission/submit_new.html' form_class = AKForm