diff --git a/galerie/admin.py b/galerie/admin.py
index 173a6606..f68f1f3c 100644
--- a/galerie/admin.py
+++ b/galerie/admin.py
@@ -28,14 +28,14 @@ def prepnout_fotogalerii_do_org_rezimu(modeladmin, request, queryset):
class GalerieInline(admin.TabularInline):
model = Obrazek
- fields = ['obrazek_velky', 'nazev', 'popis', 'poradi']
+ fields = ['soubor', 'nazev', 'popis', 'poradi']
readonly_fields = ['nazev']
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
class ObrazekAdmin(admin.ModelAdmin):
- list_display = ('obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag', 'poradi')
+ list_display = ('soubor', 'nazev', 'popis', 'poradi')
search_fields = ['nazev','popis']
class GalerieAdmin(admin.ModelAdmin):
diff --git a/galerie/models.py b/galerie/models.py
index 8de2863d..f9efb2bc 100644
--- a/galerie/models.py
+++ b/galerie/models.py
@@ -22,10 +22,12 @@ def obrazek_filename_maly():
pass
def obrazek_filename_stredni():
pass
+def obrazek_filename():
+ pass
def obrazek_filename_velky():
pass
-def obrazek_filename(self, filename):
+def galerie_filename(self, filename):
gal = self.galerie
cislo_gal = gal.pk
@@ -42,31 +44,32 @@ def obrazek_filename(self, filename):
return os.path.join(*cesta)
+# Technicky misnomer: takový `Obrazek` může být i videjko a výhledově i něco dalšího…
class Obrazek(models.Model):
# „originál“ (modulo max. velikost uploadu na web FIXME!)
- obrazek_velky = models.FileField(upload_to=obrazek_filename,
+ soubor = models.FileField(upload_to=galerie_filename,
help_text = "Lze vložit libovolně velký obrázek. Ideální je, aby alespoň jeden rozměr měl alespoň 500px.")
- # To, co se zobrazí v galerii jako hlavní obrázek (při prohlížení konkrétního obrázku a jako tittulní obrázek u galerií, které nemají vlastní obrázky (kupř. Vávrovka 2015))
-# obrazek_stredni = ImageSpecField(source='obrazek_velky',
-# processors=[Transpose(Transpose.AUTO), ResizeToFit(900, 675, upscale=False)],
-# options={'quality': 95})
- # Zmenšené obrázky v přehledu obrázků a pod hlavním obrázkem (předchozí/následující)
-# obrazek_maly = ImageSpecField(source='obrazek_velky',
-# processors=[Transpose(Transpose.AUTO), ResizeToFit(167, 167, upscale=False)],
-# options={'quality': 95})
+ class Typ(models.TextChoices):
+ OBRAZEK = 'obrazek', 'Obrázek'
+ VIDEO = 'video', 'Video'
+ NEVIM = 'nevim', 'Neznámý typ'
+ typ = models.CharField('Typ', max_length=16, blank=False, null=False, choices=Typ.choices, default=Typ.NEVIM)
+ # Filename by default; slouží k řazení
nazev = models.CharField('Název', max_length=50, blank=True, null=True)
+ # ~~Rádoby~~ vtipný popisek od orgů
popis = models.TextField('Popis', blank=True, null=True)
datum_vlozeni = models.DateTimeField('Datum vložení', auto_now_add=True)
galerie = models.ForeignKey('Galerie', blank=True, null=True, on_delete=models.SET_NULL)
+ # Primární klíč k řazení pro overridování řazení podle názvu
poradi = models.IntegerField('Pořadí', blank=True, null=True)
def __str__(self):
- return self.obrazek_velky.name
+ return f'Obrázek {self.nazev} ({self.soubor.name})'
class Meta:
verbose_name = 'Obrázek'
verbose_name_plural = 'Obrázky'
- ordering = ['nazev']
+ ordering = ['nazev'] #FIXME: zohlednit pořadí a asi i příslušnost ke galerii
def save(self, *args, **kwargs):
# obrázek potřebuje název, protože se z něj generuje cesta pro jeho uložení
@@ -75,6 +78,17 @@ class Obrazek(models.Model):
self.nazev = os.path.basename(self.obrazek_velky.name)
super(Obrazek, self).save(*args, **kwargs)
+ def jako_bazmek(self):
+ """
+ Hlavní metoda pro dělání `galerie.typy.ZobrazitelnyBazmek` z DB objektů
+ """
+ import galerie.typy as typy # pozor, cyklí!
+ match self.typ:
+ case self.Typ.OBRAZEK: return typy.Obrazek(self)
+ case self.Typ.VIDEO: return typy.Video(self)
+ case self.Typ.NEVIM: return typy.DummyBazmek(self)
+ case _: raise ValueError("Neznámý typ obrázku, bug v kódu!")
+
class Galerie(models.Model):
nazev = models.CharField('Název', max_length=100)
diff --git a/galerie/templates/galerie/Galerie.html b/galerie/templates/galerie/Galerie.html
index ff8ebfe3..61453531 100644
--- a/galerie/templates/galerie/Galerie.html
+++ b/galerie/templates/galerie/Galerie.html
@@ -1,5 +1,6 @@
{% extends "galerie/base.html" %}
+{% load bazmeky %}
{% block nadpis1a %}
{{galerie.nazev}}: {{ obrazek.popis | default:"Fotka" }}
@@ -63,11 +64,12 @@
{% endwith %}
{% endif%}
-
+ {% zobrazit obrazek.jako_bazmek
+ height=vyska
+ width=sirka
+ alt=obrazek.popis
+ title=obrazek.popis
+ class=obrazek" %}
{% if obrazky_dalsi %}
{% with obrazky_dalsi|first as dalsi_obrazek %}
@@ -78,7 +80,7 @@
{% endif%}
-
+
{# Popisek fotky #}
@@ -109,21 +111,21 @@
{% endif %}
{# nahledy predchozich obrazku #}
{% for obrazek in obrazky_predchozi %}
-
+ {% zmenseny_nahled obrazek.jako_bazmek height=100 %}
{% endfor %}
-
+ {% zmenseny_nahled obrazek.jako_bazmek
+ alt=obrazek.popis
+ class=obrazek
+ id=prostredni %}
+ {# height=obrazek.obrazek_maly.height
+ width=obrazek.obrazek_maly.width #}