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'