Compare commits

...

3 commits

Author SHA1 Message Date
Pavel "LEdoian" Turinsky
b7498b42b2 Galerie: z obrazek_velký FileField, ostatní dočasně zrušené [WIP!]
Plán: udělat z `obrazek_velky` `soubor`, přidat `typ` (`OBRAZEK`,
`VIDEO`, `NEVIM`) a ImageKit použít jen na vyrábění zmenšených obrázků
(pro `VIDEO` použít `<video>` přímo; pro `NEVIM` nějaký generický
placeholder a pokyn orgovi, ať to opraví v Adminu.

Ref: https://django-imagekit.readthedocs.io/en/latest/#defining-specs-outside-of-models
2025-05-01 00:20:51 +02:00
Pavel "LEdoian" Turinsky
e835d0ab48 Galerie: Co je který obrázek_velikost 2025-05-01 00:20:23 +02:00
Pavel "LEdoian" Turinsky
def6c0ede7 Galerie: Zrušení obrazek_maly_tag
už od Dj 2.0 nefunkční, kdyžtak se přidá zpět později…
2025-05-01 00:18:44 +02:00
2 changed files with 12 additions and 16 deletions

View file

@ -28,8 +28,8 @@ def prepnout_fotogalerii_do_org_rezimu(modeladmin, request, queryset):
class GalerieInline(admin.TabularInline): class GalerieInline(admin.TabularInline):
model = Obrazek model = Obrazek
fields = ['obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag', 'poradi'] fields = ['obrazek_velky', 'nazev', 'popis', 'poradi']
readonly_fields = ['nazev', 'obrazek_maly_tag'] readonly_fields = ['nazev']
formfield_overrides = { formfield_overrides = {
models.TextField: {'widget': forms.TextInput}, models.TextField: {'widget': forms.TextInput},
} }

View file

@ -43,14 +43,17 @@ def obrazek_filename(self, filename):
return os.path.join(*cesta) return os.path.join(*cesta)
class Obrazek(models.Model): class Obrazek(models.Model):
obrazek_velky = models.ImageField(upload_to=obrazek_filename, # „originál“ (modulo max. velikost uploadu na web FIXME!)
obrazek_velky = models.FileField(upload_to=obrazek_filename,
help_text = "Lze vložit libovolně velký obrázek. Ideální je, aby alespoň jeden rozměr měl alespoň 500px.") help_text = "Lze vložit libovolně velký obrázek. Ideální je, aby alespoň jeden rozměr měl alespoň 500px.")
obrazek_stredni = ImageSpecField(source='obrazek_velky', # 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))
processors=[Transpose(Transpose.AUTO), ResizeToFit(900, 675, upscale=False)], # obrazek_stredni = ImageSpecField(source='obrazek_velky',
options={'quality': 95}) # processors=[Transpose(Transpose.AUTO), ResizeToFit(900, 675, upscale=False)],
obrazek_maly = ImageSpecField(source='obrazek_velky', # options={'quality': 95})
processors=[Transpose(Transpose.AUTO), ResizeToFit(167, 167, upscale=False)], # Zmenšené obrázky v přehledu obrázků a pod hlavním obrázkem (předchozí/následující)
options={'quality': 95}) # obrazek_maly = ImageSpecField(source='obrazek_velky',
# processors=[Transpose(Transpose.AUTO), ResizeToFit(167, 167, upscale=False)],
# options={'quality': 95})
nazev = models.CharField('Název', max_length=50, blank=True, null=True) nazev = models.CharField('Název', max_length=50, blank=True, null=True)
popis = models.TextField('Popis', blank=True, null=True) popis = models.TextField('Popis', blank=True, null=True)
datum_vlozeni = models.DateTimeField('Datum vložení', auto_now_add=True) datum_vlozeni = models.DateTimeField('Datum vložení', auto_now_add=True)
@ -65,13 +68,6 @@ class Obrazek(models.Model):
verbose_name_plural = 'Obrázky' verbose_name_plural = 'Obrázky'
ordering = ['nazev'] ordering = ['nazev']
def obrazek_maly_tag(self):
if not self.obrazek_maly:
return ''
return u'<img src="{}">'.format(self.obrazek_maly.url)
obrazek_maly_tag.short_description = "Náhled"
obrazek_maly_tag.allow_tags = True
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
# obrázek potřebuje název, protože se z něj generuje cesta pro jeho uložení # obrázek potřebuje název, protože se z něj generuje cesta pro jeho uložení
# (a pak se podle něj taky řadí) # (a pak se podle něj taky řadí)