Skip to content
Snippets Groups Projects
views.py 3.72 KiB
Newer Older
  • Learn to ignore specific revisions
  • from django.contrib import messages
    
    from django.urls import reverse_lazy
    
    from django.utils.translation import gettext_lazy as _
    
    from django.views.generic import ListView, DetailView, CreateView
    
    from AKModel.models import AK, AKCategory, AKTag, AKOwner
    
    Nadja Geisler's avatar
    Nadja Geisler committed
    from AKModel.models import Event
    from AKModel.views import EventSlugMixin
    from AKModel.views import FilterByEventSlugMixin
    
    from AKSubmission.forms import AKForm, AKWishForm, AKOwnerForm
    
    
    
    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
    
            # Find category based on event slug
    
                self.category = AKCategory.objects.get(pk=self.kwargs['category_pk'])
                self.filter_condition_string = f"{_('Category')} = {self.category.name}"
            except AKCategory.DoesNotExist:
    
            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)
    
    class AKSubmissionView(EventSlugMixin, CreateView):
    
        model = AK
        template_name = 'AKSubmission/submit_new.html'
        form_class = AKForm
    
    
        def get_initial(self):
            initials = super(AKSubmissionView, self).get_initial()
            initials['owners'] = [AKOwner.get_by_slug(self.kwargs['owner_slug'])]
            return initials
    
    
        def get_success_url(self):
    
            messages.add_message(self.request, messages.SUCCESS, _("AK successfully created"))
            return reverse_lazy('submit:ak_detail', kwargs={'event_slug': self.kwargs['event_slug'], 'pk': self.object.pk})
    
    
        def form_valid(self, form):
            instance = form.save(commit=False)
    
            # Set event
            instance.event = Event.get_by_slug(self.kwargs["event_slug"])
    
            # Generate short name if not given
            # TODO
    
            # Generate wiki link
            # TODO
    
            # Generate slot(s)
            # TODO
    
            return super().form_valid(form)
    
    Nadja Geisler's avatar
    Nadja Geisler committed
    
    
    class AKWishSubmissionView(AKSubmissionView):
        template_name = 'AKSubmission/submit_new_wish.html'
        form_class = AKWishForm
    
    
    
    class AKOwnerSelectCreateView(EventSlugMixin, CreateView):
        model = AKOwner
        template_name = 'AKSubmission/akowner_create_select.html'
        form_class = AKOwnerForm
    
        def get_success_url(self):
            return reverse_lazy('submit:submit_ak',
                                kwargs={'event_slug': self.kwargs['event_slug'], 'owner_slug': self.object.slug})
    
        def form_valid(self, form):
            instance = form.save(commit=False)
    
            # Set event
            instance.event = Event.get_by_slug(self.kwargs["event_slug"])
    
            return super().form_valid(form)