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.http import HttpResponseRedirect
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:
# VŽDY/ÚČASTNÍKŮM/ORGŮM) a úpravy (bool), přičemž během úprav se zobrazuje
# jen orgům?
queryset = queryset.filter(zobrazit=ORG)
queryset = queryset.filter(zobrazit=Galerie.Viditelnost.ORG)
for galerie in queryset:
galerie.zobrazit = VZDY
galerie.zobrazit = Galerie.Viditelnost.VZDY
galerie.save()
zverejnit_fotogalerii(modeladmin, request,
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):
'''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:
galerie.zobrazit = ORG
galerie.zobrazit = Galerie.Viditelnost.ORG
galerie.save()
prepnout_fotogalerii_do_org_rezimu(modeladmin, request,
Galerie.objects.filter(galerie_up = galerie))

View file

@ -8,17 +8,6 @@ import os
from soustredeni.models import Soustredeni
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í
# až se ty migrace někdy squashnou, tak by mělo být možné funkce smazat
def obrazek_filename_maly():
@ -47,7 +36,7 @@ def galerie_filename(self, filename):
return os.path.join(*cesta)
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,
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):
@ -91,14 +80,19 @@ class Soubor(models.Model):
case self.Typ.NEVIM: return typy.DummyBazmek(self)
case _: raise ValueError("Neznámý typ obrázku, bug v kódu!")
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')
datum_vytvoreni = models.DateTimeField('Datum vytvoření', auto_now_add = True)
datum_zmeny = models.DateTimeField('Datum poslední změny', auto_now = 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)
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,
on_delete=models.PROTECT)
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 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 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
logger = logging.getLogger(__name__)