From 3e249aef5ebafaf6a5a649966dd0c720be7136b7 Mon Sep 17 00:00:00 2001 From: "Pavel \"LEdoian\" Turinsky" Date: Tue, 19 Jan 2021 21:18:48 +0100 Subject: [PATCH] =?UTF-8?q?Odevzd=C3=A1vatko:=20nezobrazovat=20seznam=20je?= =?UTF-8?q?dnoho=20=C5=99e=C5=A1en=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/views/odevzdavatko.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/seminar/views/odevzdavatko.py b/seminar/views/odevzdavatko.py index 6a593740..0647b770 100644 --- a/seminar/views/odevzdavatko.py +++ b/seminar/views/odevzdavatko.py @@ -1,5 +1,9 @@ from django.views.generic import ListView, DetailView, FormView +from django.views.generic.list import MultipleObjectTemplateResponseMixin,MultipleObjectMixin +from django.views.generic.base import View from django.views.generic.detail import SingleObjectMixin +from django.shortcuts import redirect +from django.urls import reverse from dataclasses import dataclass import datetime @@ -87,7 +91,8 @@ class TabulkaOdevzdanychReseniView(ListView): return ctx -class ReseniProblemuView(ListView): +# Velmi silně inspirováno zdrojáky, FIXME: Nedá se to udělat smysluplněji? +class ReseniProblemuView(MultipleObjectTemplateResponseMixin, MultipleObjectMixin, View): model = m.Reseni template_name = 'seminar/odevzdavatko/seznam.html' @@ -108,6 +113,13 @@ class ReseniProblemuView(ListView): ) return qs + def get(self, request, *args, **kwargs): + self.object_list = self.get_queryset() + if self.object_list.count() == 1: + jedine_reseni = self.object_list.first() + return redirect(reverse("odevzdavatko_detail_reseni", kwargs={"pk": jedine_reseni.id})) + context = self.get_context_data() + return self.render_to_response(context) # Kontext automaticky? ## XXX: https://docs.djangoproject.com/en/3.1/topics/class-based-views/mixins/#avoid-anything-more-complex