Skip to content
Snippets Groups Projects
Commit fc69aafc authored by Benjamin Hättasch's avatar Benjamin Hättasch
Browse files

Improve event slug handling

parent 14211003
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment