from django.http import Http404 from django.utils.translation import gettext_lazy as _ from django.views.generic import ListView, DetailView from AKModel.models import AK, AKCategory, AKTag from AKModel.views import FilterByEventSlugMixin class SubmissionOverviewView(FilterByEventSlugMixin, ListView): model = AK context_object_name = "AKs" template_name = "AKSubmission/submission_overview.html" ordering = ['category'] class AKDetailView(DetailView): model = AK context_object_name = "ak" template_name = "AKSubmission/ak_detail.html" class AKListView(FilterByEventSlugMixin, ListView): model = AK context_object_name = "AKs" template_name = "AKSubmission/ak_list.html" filter_condition_string = "" def get_context_data(self, *, object_list=None, **kwargs): context = super().get_context_data(object_list=object_list, **kwargs) context['categories'] = AKCategory.objects.all() context["tags"] = AKTag.objects.all() context["filter_condition_string"] = self.filter_condition_string return context class AKListByCategoryView(AKListView): category = None def get_queryset(self): # Find category based on event slug try: self.category = AKCategory.objects.get(pk=self.kwargs['category_pk']) self.filter_condition_string = f"{_('Category')} = {self.category.name}" except AKCategory.DoesNotExist: raise Http404 return super().get_queryset().filter(category=self.category) class AKListByTagView(AKListView): tag = None def get_queryset(self): # Find category based on event slug try: self.tag = AKTag.objects.get(pk=self.kwargs['tag_pk']) self.filter_condition_string = f"{_('Tag')} = {self.tag.name}" except AKTag.DoesNotExist: raise Http404 return super().get_queryset().filter(tags=self.tag)