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
Branches
No related tags found
1 merge request!4Submission form
......@@ -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.
Please register or to comment