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 ...@@ -3,24 +3,32 @@ from django.http import Http404
from AKModel.models import Event 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 event = None
def get_queryset(self): def get(self, request, *args, **kwargs):
# Find event based on event slug # Find event based on event slug
try: try:
self.event = Event.get_by_slug(self.kwargs.get("event_slug", None)) self.event = Event.get_by_slug(self.kwargs.get("event_slug", None))
except Event.DoesNotExist: except Event.DoesNotExist:
raise Http404 raise Http404
return super().get(request, *args, **kwargs)
# 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): def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(object_list=object_list, **kwargs) context = super().get_context_data(object_list=object_list, **kwargs)
# Add event to context (to make it accessible in templates) # Add event to context (to make it accessible in templates)
context["event"] = self.event context["event"] = self.event
return context 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 _ ...@@ -5,7 +5,7 @@ from django.utils.translation import gettext_lazy as _
from django.views.generic import ListView, DetailView, CreateView from django.views.generic import ListView, DetailView, CreateView
from AKModel.models import AK, AKCategory, AKTag, Event from AKModel.models import AK, AKCategory, AKTag, Event
from AKModel.views import FilterByEventSlugMixin from AKModel.views import FilterByEventSlugMixin, EventSlugMixin
from AKSubmission.forms import AKForm from AKSubmission.forms import AKForm
...@@ -62,7 +62,7 @@ class AKListByTagView(AKListView): ...@@ -62,7 +62,7 @@ class AKListByTagView(AKListView):
return super().get_queryset().filter(tags=self.tag) return super().get_queryset().filter(tags=self.tag)
class AKSubmissionView(CreateView): class AKSubmissionView(EventSlugMixin, CreateView):
model = AK model = AK
template_name = 'AKSubmission/submit_new.html' template_name = 'AKSubmission/submit_new.html'
form_class = AKForm 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