Viditelnost galerie jako enum

This commit is contained in:
LEdoian 2025-12-16 20:14:04 +00:00
parent 1dd332675f
commit efb395e15a
3 changed files with 19 additions and 20 deletions

View file

@ -1,4 +1,4 @@
from galerie.models import Soubor, Galerie, VZDY, ORG, UCASTNIK from galerie.models import Soubor, Galerie
from django.contrib import admin from django.contrib import admin
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django import forms from django import forms
@ -9,9 +9,9 @@ def zverejnit_fotogalerii(modeladmin, request, queryset):
# TODO: rozbíjí práva. Čistší je mít separátně práva (zobrazit: # TODO: rozbíjí práva. Čistší je mít separátně práva (zobrazit:
# VŽDY/ÚČASTNÍKŮM/ORGŮM) a úpravy (bool), přičemž během úprav se zobrazuje # VŽDY/ÚČASTNÍKŮM/ORGŮM) a úpravy (bool), přičemž během úprav se zobrazuje
# jen orgům? # jen orgům?
queryset = queryset.filter(zobrazit=ORG) queryset = queryset.filter(zobrazit=Galerie.Viditelnost.ORG)
for galerie in queryset: for galerie in queryset:
galerie.zobrazit = VZDY galerie.zobrazit = Galerie.Viditelnost.VZDY
galerie.save() galerie.save()
zverejnit_fotogalerii(modeladmin, request, zverejnit_fotogalerii(modeladmin, request,
Galerie.objects.filter(galerie_up = galerie)) Galerie.objects.filter(galerie_up = galerie))
@ -20,9 +20,9 @@ def zverejnit_fotogalerii(modeladmin, request, queryset):
def prepnout_fotogalerii_do_org_rezimu(modeladmin, request, queryset): def prepnout_fotogalerii_do_org_rezimu(modeladmin, request, queryset):
'''zneveřejni vybranou fotogalerii i její všechny podgalerie''' '''zneveřejni vybranou fotogalerii i její všechny podgalerie'''
queryset = queryset.filter(zobrazit=VZDY) queryset = queryset.filter(zobrazit=Galerie.Viditelnost.VZDY)
for galerie in queryset: for galerie in queryset:
galerie.zobrazit = ORG galerie.zobrazit = Galerie.Viditelnost.ORG
galerie.save() galerie.save()
prepnout_fotogalerii_do_org_rezimu(modeladmin, request, prepnout_fotogalerii_do_org_rezimu(modeladmin, request,
Galerie.objects.filter(galerie_up = galerie)) Galerie.objects.filter(galerie_up = galerie))

View file

@ -8,17 +8,6 @@ import os
from soustredeni.models import Soustredeni from soustredeni.models import Soustredeni
from galerie.utils import top_galerie from galerie.utils import top_galerie
VZDY=0
ORG=1
# Pozor, diskontinuita, tady bylo `NIKDY`
UCASTNIK=3
# TODO: Enum!
VIDITELNOST = (
(VZDY, 'Vždy'),
(ORG, 'Organizátorům'),
(UCASTNIK, 'Účastníkům a orgům'),
)
# tyhle funkce jsou tady jen kvůli starým migracím, které se na ně odkazují # tyhle funkce jsou tady jen kvůli starým migracím, které se na ně odkazují
# až se ty migrace někdy squashnou, tak by mělo být možné funkce smazat # až se ty migrace někdy squashnou, tak by mělo být možné funkce smazat
def obrazek_filename_maly(): def obrazek_filename_maly():
@ -47,7 +36,7 @@ def galerie_filename(self, filename):
return os.path.join(*cesta) return os.path.join(*cesta)
class Soubor(models.Model): class Soubor(models.Model):
# „originál“ (modulo max. velikost uploadu na web FIXME!) #: „originál“ (modulo max. velikost uploadu na web FIXME!)
soubor = models.FileField(upload_to=galerie_filename, soubor = models.FileField(upload_to=galerie_filename,
help_text = "Lze vložit libovolně velký obrázek/soubor. Ideální je, aby alespoň jeden rozměr měl alespoň 500px.") help_text = "Lze vložit libovolně velký obrázek/soubor. Ideální je, aby alespoň jeden rozměr měl alespoň 500px.")
class Typ(models.TextChoices): class Typ(models.TextChoices):
@ -91,14 +80,19 @@ class Soubor(models.Model):
case self.Typ.NEVIM: return typy.DummyBazmek(self) case self.Typ.NEVIM: return typy.DummyBazmek(self)
case _: raise ValueError("Neznámý typ obrázku, bug v kódu!") case _: raise ValueError("Neznámý typ obrázku, bug v kódu!")
class Galerie(models.Model): class Galerie(models.Model):
class Viditelnost(models.IntegerChoices):
VZDY = 0, 'Vždy'
ORG = 1, 'Organizátorům'
# Diskontinuita: 2 bylo „NIKDY“
UCASTNIK = 3, 'Účastníkům a orgům'
nazev = models.CharField('Název galerie', max_length=100, help_text='Např. "Soustředění Bratrouchov 2025" nebo "Pondělí", ukazuje se v cestičce') nazev = models.CharField('Název galerie', max_length=100, help_text='Např. "Soustředění Bratrouchov 2025" nebo "Pondělí", ukazuje se v cestičce')
datum_vytvoreni = models.DateTimeField('Datum vytvoření', auto_now_add = True) datum_vytvoreni = models.DateTimeField('Datum vytvoření', auto_now_add = True)
datum_zmeny = models.DateTimeField('Datum poslední změny', auto_now = True) datum_zmeny = models.DateTimeField('Datum poslední změny', auto_now = True)
poznamka = models.TextField('neveřejná poznámka', blank = True, null = True) poznamka = models.TextField('neveřejná poznámka', blank = True, null = True)
titulni_obrazek = models.ForeignKey(Soubor, blank = True, null = True, related_name = "+", on_delete = models.SET_NULL) titulni_obrazek = models.ForeignKey(Soubor, blank = True, null = True, related_name = "+", on_delete = models.SET_NULL)
zobrazit = models.IntegerField('Zobrazit?', default = ORG, choices = VIDITELNOST) zobrazit = models.IntegerField('Zobrazit?', default = Viditelnost.ORG, choices = Viditelnost.choices) # TODO: Dj5 už stačí `choices = Viditelnost`
galerie_up = models.ForeignKey('Galerie', blank = True, null = True, galerie_up = models.ForeignKey('Galerie', blank = True, null = True,
on_delete=models.PROTECT) on_delete=models.PROTECT)
soustredeni = models.ForeignKey(Soustredeni, blank = True, null = True, soustredeni = models.ForeignKey(Soustredeni, blank = True, null = True,

View file

@ -8,10 +8,15 @@ from datetime import datetime
from galerie.utils import top_galerie from galerie.utils import top_galerie
from personalni.utils import resitel_uzivatele from personalni.utils import resitel_uzivatele
from galerie.models import Soubor, Galerie, VZDY, ORG, UCASTNIK from galerie.models import Soubor, Galerie
from soustredeni.models import Soustredeni from soustredeni.models import Soustredeni
from galerie.forms import KomentarForm, NewGalerieForm from galerie.forms import KomentarForm, NewGalerieForm
# Tohle byl import a používá se to tu relativně extensivně, tak asi nedává smysl všude psát prefix `Galerie.Viditelnost.`
VZDY = Galerie.Viditelnost.VZDY
ORG = Galerie.Viditelnost.ORG
UCASTNIK = Galerie.Viditelnost.UCASTNIK
import logging import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)