Skip to content
Snippets Groups Projects
views.py 1.84 KiB
Newer Older
from django.http import Http404
from django.views.generic import ListView, DetailView
from AKModel.models import AK, AKType, AKTag
from AKModel.views import FilterByEventSlugMixin

from django.utils.translation import gettext_lazy as _


class SubmissionOverviewView(FilterByEventSlugMixin, ListView):
    model = AK
    context_object_name = "AKs"
    template_name = "AKSubmission/submission_overview.html"
    ordering = ["type"]


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["types"] = AKType.objects.all()
        context["tags"] = AKTag.objects.all()
        context["filter_condition_string"] = self.filter_condition_string
        return context


class AKListByTypeView(AKListView):
    type = None

    def get_queryset(self):
        # Find type based on event slug
        try:
            self.type = AKType.objects.get(pk=self.kwargs['type_pk'])
            self.filter_condition_string = f"{_('Type')} = {self.type.name}"
        except AKType.DoesNotExist:
            raise Http404
        return super().get_queryset().filter(type=self.type)


class AKListByTagView(AKListView):
    tag = None

    def get_queryset(self):
        # Find type 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)