diff --git a/AKModel/views.py b/AKModel/views.py index 60f00ef0ef347811e7b0c0921b7fda097acd9fcc..55d76b42a101e13309bccab30fde01b76d38154a 100644 --- a/AKModel/views.py +++ b/AKModel/views.py @@ -1 +1,26 @@ -# Create your views here. +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 diff --git a/AKPlanning/urls.py b/AKPlanning/urls.py index e6a858b34cc7a4339fbcc1669307fe834bd3f40a..959681e6f5d2539136861214732661eae9d55de3 100644 --- a/AKPlanning/urls.py +++ b/AKPlanning/urls.py @@ -14,8 +14,9 @@ Including another URLconf 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), + path('', include('AKSubmission.urls', namespace='submit')), ] diff --git a/AKSubmission/urls.py b/AKSubmission/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..000bcc51a8fb748e073a5d81dc07ade526a85ece --- /dev/null +++ b/AKSubmission/urls.py @@ -0,0 +1,14 @@ +from django.urls import path, include + +from . import views + +app_name = "submit" + +urlpatterns = [ + path( + '<slug:event_slug>/', + include([ + path('submission/', views.SubmissionOverviewView.as_view(), name='submission_overview'), + ]) + ), +] diff --git a/AKSubmission/views.py b/AKSubmission/views.py index 60f00ef0ef347811e7b0c0921b7fda097acd9fcc..634334d00f54d60a72862d9931cf126dbbfa2b93 100644 --- a/AKSubmission/views.py +++ b/AKSubmission/views.py @@ -1 +1,11 @@ -# Create your views here. +from django.views.generic import ListView + +from AKModel.models import AK +from AKModel.views import FilterByEventSlugMixin + + +class SubmissionOverviewView(FilterByEventSlugMixin, ListView): + model = AK + context_object_name = "AKs" + template_name = "AKSubmission/submission_overview.html" + ordering = ["type"]