From c5b5813d754fea920b0606c1c8069701709ae168 Mon Sep 17 00:00:00 2001
From: "Pavel \"LEdoian\" Turinsky" <ledoian@matfyz.cz>
Date: Wed, 19 Mar 2025 22:18:29 +0100
Subject: [PATCH] =?UTF-8?q?=C5=A0ifrova=C4=8Dka:=20podmno=C5=BEiny=20odpov?=
 =?UTF-8?q?=C4=9Bd=C3=AD=20na=20=C5=A1ifry?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 sifrovacka/admin.py  | 3 ++-
 sifrovacka/models.py | 7 +++++++
 sifrovacka/urls.py   | 7 ++++++-
 sifrovacka/views.py  | 9 ++++++++-
 4 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/sifrovacka/admin.py b/sifrovacka/admin.py
index ff980cd9..ec159726 100644
--- a/sifrovacka/admin.py
+++ b/sifrovacka/admin.py
@@ -1,8 +1,9 @@
 from django.contrib import admin
 
-from .models import OdpovedUcastnika, SpravnaOdpoved, NapovezenoUcastnikovi, Napoveda
+from .models import OdpovedUcastnika, SpravnaOdpoved, NapovezenoUcastnikovi, Napoveda, SeznamSifer
 
 admin.site.register(OdpovedUcastnika)
 admin.site.register(SpravnaOdpoved)
 admin.site.register(Napoveda)
 admin.site.register(NapovezenoUcastnikovi)
+admin.site.register(SeznamSifer)
diff --git a/sifrovacka/models.py b/sifrovacka/models.py
index cd71fd15..94d6f828 100644
--- a/sifrovacka/models.py
+++ b/sifrovacka/models.py
@@ -39,3 +39,10 @@ class Napoveda(models.Model):
 
 	def __str__(self):
 		return f"{self.sifra}: {self.text}"
+
+class SeznamSifer(models.Model):
+	jmeno = models.CharField("Jméno seznamu", max_length=255, blank=False, null=False, help_text="něco co jde zadat do adresy")
+	sifry = models.ManyToManyField(SpravnaOdpoved)
+
+	def __str__(self):
+		return f"{self.jmeno}"
diff --git a/sifrovacka/urls.py b/sifrovacka/urls.py
index 1357ef27..63e9a5c2 100644
--- a/sifrovacka/urls.py
+++ b/sifrovacka/urls.py
@@ -1,7 +1,7 @@
 from django.urls import path
 
 from personalni.utils import org_required, resitel_or_org_required
-from .views import SifrovackaView, SifrovackaListView, NapovedaView, NapovedaListView, PreskoceniView
+from .views import SifrovackaView, SifrovackaListView, SifrovackaNektereListView, NapovedaView, NapovedaListView, PreskoceniView
 
 urlpatterns = [
 	path(
@@ -14,6 +14,11 @@ urlpatterns = [
 		org_required(SifrovackaListView.as_view()),
 		name='sifrovacka_odpovedi'
 	),
+	path(
+		'odpovedi/<str:seznam>/',
+		org_required(SifrovackaNektereListView.as_view()),
+		name='sifrovacka_odpovedi_nektere'
+	),
 	path(
 		'napoveda/',
 		resitel_or_org_required(NapovedaView.as_view()),
diff --git a/sifrovacka/views.py b/sifrovacka/views.py
index 2a111faf..112b91f6 100644
--- a/sifrovacka/views.py
+++ b/sifrovacka/views.py
@@ -1,9 +1,10 @@
+from django.shortcuts import get_object_or_404
 from django.urls import reverse
 from django.views.generic import FormView, ListView
 
 from various.views.pomocne import formularOKView
 from .forms import SifrovackaForm, NapovedaForm
-from .models import OdpovedUcastnika, SpravnaOdpoved, Napoveda, NapovezenoUcastnikovi
+from .models import OdpovedUcastnika, SpravnaOdpoved, Napoveda, NapovezenoUcastnikovi, SeznamSifer
 from personalni.models import Resitel
 
 
@@ -30,6 +31,12 @@ class SifrovackaListView(ListView):
 	template_name = 'sifrovacka/odpovedi_list.html'
 	model = OdpovedUcastnika
 
+class SifrovackaNektereListView(SifrovackaListView):
+	def get_queryset(self):
+		seznam = get_object_or_404(SeznamSifer, jmeno=self.kwargs['seznam'])
+		orig = super().get_queryset()
+		return orig.filter(sifra__in=seznam.sifry.all())
+
 
 class NapovedaView(FormView):
 	template_name = 'sifrovacka/napoveda.html'