Šifrovačka: podmnožiny odpovědí na šifry

This commit is contained in:
Pavel "LEdoian" Turinsky 2025-03-19 22:18:29 +01:00
parent ee2b25f8f0
commit c5b5813d75
4 changed files with 23 additions and 3 deletions

View file

@ -1,8 +1,9 @@
from django.contrib import admin 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(OdpovedUcastnika)
admin.site.register(SpravnaOdpoved) admin.site.register(SpravnaOdpoved)
admin.site.register(Napoveda) admin.site.register(Napoveda)
admin.site.register(NapovezenoUcastnikovi) admin.site.register(NapovezenoUcastnikovi)
admin.site.register(SeznamSifer)

View file

@ -39,3 +39,10 @@ class Napoveda(models.Model):
def __str__(self): def __str__(self):
return f"{self.sifra}: {self.text}" 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}"

View file

@ -1,7 +1,7 @@
from django.urls import path from django.urls import path
from personalni.utils import org_required, resitel_or_org_required 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 = [ urlpatterns = [
path( path(
@ -14,6 +14,11 @@ urlpatterns = [
org_required(SifrovackaListView.as_view()), org_required(SifrovackaListView.as_view()),
name='sifrovacka_odpovedi' name='sifrovacka_odpovedi'
), ),
path(
'odpovedi/<str:seznam>/',
org_required(SifrovackaNektereListView.as_view()),
name='sifrovacka_odpovedi_nektere'
),
path( path(
'napoveda/', 'napoveda/',
resitel_or_org_required(NapovedaView.as_view()), resitel_or_org_required(NapovedaView.as_view()),

View file

@ -1,9 +1,10 @@
from django.shortcuts import get_object_or_404
from django.urls import reverse from django.urls import reverse
from django.views.generic import FormView, ListView from django.views.generic import FormView, ListView
from various.views.pomocne import formularOKView from various.views.pomocne import formularOKView
from .forms import SifrovackaForm, NapovedaForm 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 from personalni.models import Resitel
@ -30,6 +31,12 @@ class SifrovackaListView(ListView):
template_name = 'sifrovacka/odpovedi_list.html' template_name = 'sifrovacka/odpovedi_list.html'
model = OdpovedUcastnika 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): class NapovedaView(FormView):
template_name = 'sifrovacka/napoveda.html' template_name = 'sifrovacka/napoveda.html'