Choices na Enum (u přednášek)

This commit is contained in:
Jonas Havelka 2025-01-24 15:36:33 +01:00
parent 2f814956a7
commit e933c6978d
3 changed files with 24 additions and 31 deletions

View file

@ -4,7 +4,7 @@ from reversion.admin import VersionAdmin
from django.utils.safestring import mark_safe
from django.utils.html import escape
from .models import Prednaska, Seznam, STAV_NAVRH, Znalost
from .models import Prednaska, Seznam, Znalost
from soustredeni.models import Soustredeni
@ -71,7 +71,7 @@ class PrednaskaAdmin(VersionAdmin):
def move_to_soustredeni(self, request, queryset):
sous = Soustredeni.objects.first()
seznam = Seznam.objects.filter(soustredeni=sous, stav=STAV_NAVRH)
seznam = Seznam.objects.filter(soustredeni=sous, stav=Seznam.Stav.NAVRH)
if len(seznam) == 0:
self.message_user(
request,

View file

@ -3,15 +3,6 @@ from django.db import models
from soustredeni.models import Soustredeni
from personalni.models import Organizator, Osoba
STAV_NAVRH = 1
STAV_BUDE = 2
STAV_CHOICES = (
(STAV_NAVRH, 'Návrh'),
(STAV_BUDE, 'Bude')
)
class Seznam(models.Model):
class Meta:
@ -20,27 +11,18 @@ class Seznam(models.Model):
verbose_name_plural = 'Seznamy přednášek'
ordering = ['soustredeni', 'stav']
class Stav(models.IntegerChoices):
NAVRH = 1, "Návrh"
BUDE = 2, "Bude"
id = models.AutoField(primary_key = True)
soustredeni = models.ForeignKey(Soustredeni,null = True, default = None,
on_delete=models.PROTECT)
stav = models.IntegerField('Stav',choices=STAV_CHOICES,default = STAV_NAVRH)
stav = models.IntegerField('Stav', choices=Stav.choices, default=Stav.NAVRH)
def __str__(self):
return "Seznam {}přednášek na {}".format("návrhů "
if self.stav == STAV_NAVRH else "", self.soustredeni)
CHOICES_OBTIZNOST = (
(1, 'Lehká'),
(2, 'Střední'),
(3, 'Těžká'),
)
CHOICES_BODY = (
(-1, '-1'),
(0, '0'),
(1, '1'),
)
if self.stav == Seznam.Stav.NAVRH else "", self.soustredeni)
class Prednaska(models.Model):
class Meta:
@ -49,12 +31,17 @@ class Prednaska(models.Model):
verbose_name_plural = 'Přednášky'
ordering = ['org', 'nazev']
class Obtiznost(models.IntegerChoices):
LEHKA = 1, "Lehká"
STREDNI = 2, "Střední"
TEZKA = 3, "Těžká"
id = models.AutoField(primary_key = True)
nazev = models.CharField('Název', max_length = 300)
org = models.ForeignKey(Organizator, on_delete=models.PROTECT)
popis = models.TextField('Popis pro orgy',null = True, blank = True,help_text = 'Neveřejný popis pro ostatní orgy')
anotace = models.TextField('Anotace',null = True, blank = True, help_text = 'Veřejná anotace v hlasování')
obtiznost = models.IntegerField('Obtížnost', choices=CHOICES_OBTIZNOST)
obtiznost = models.IntegerField('Obtížnost', choices=Obtiznost.choices)
obor = models.CharField('Obor', max_length = 5, help_text = 'Podmnožina MFIOB')
klicova = models.CharField('Klíčová slova', max_length = 200, null = True, blank = True)
seznamy = models.ManyToManyField(Seznam)
@ -96,9 +83,15 @@ class Hlasovani(models.Model):
verbose_name = 'Hlasování'
verbose_name_plural = 'Hlasování'
ordering = ['ucastnik', 'prednaska']
class Body(models.IntegerChoices):
NECHCI = -1, "rozhodně nechci"
JEDNO = 0, "je mi to jedno"
CHCI = 1, "rozhodně chci"
id = models.AutoField(primary_key = True)
prednaska = models.ForeignKey(Prednaska, on_delete=models.CASCADE)
body = models.IntegerField('Body', default = 0, choices = CHOICES_BODY)
body = models.IntegerField('Body', default = Body.JEDNO, choices = Body.choices)
ucastnik = models.CharField('Účastník', max_length = 100)
seznam = models.ForeignKey(Seznam,null=True,on_delete=models.SET_NULL)

View file

@ -10,14 +10,14 @@ from django.forms import Form
from various.views.pomocne import formularOKView
from various.models import Nastaveni
from prednasky.models import Prednaska, Hlasovani, Seznam, STAV_NAVRH
from prednasky.models import Prednaska, Hlasovani, Seznam
from soustredeni.models import Soustredeni
from personalni.models import Osoba
def newPrednaska(request):
# hlasovani se vztahuje k nejnovejsimu soustredeni
sous = Nastaveni.get_solo().aktualni_sous
seznam = Seznam.objects.filter(soustredeni = sous, stav = STAV_NAVRH).first()
seznam = Seznam.objects.filter(soustredeni = sous, stav=Seznam.Stav.NAVRH).first()
if sous is None or seznam is None:
return render(request, 'universal.html', {
'title': "Nelze hlasovat",
@ -87,7 +87,7 @@ class SeznamListView(generic.ListView):
# hlasovani se vztahuje k nejnovejsimu soustredeni
sous = Soustredeni.objects.first()
seznam = Seznam.objects.filter(soustredeni = sous, stav = STAV_NAVRH).first()
seznam = Seznam.objects.filter(soustredeni = sous, stav=Seznam.Stav.NAVRH).first()
for obj in self.object_list:
hlasovani_set = obj.hlasovani_set.filter(seznam=seznam).only('body')