Galerie: Obrázek přejmenován na Soubor
This commit is contained in:
parent
d07d4daf04
commit
3e18f51550
4 changed files with 18 additions and 18 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
from galerie.models import Obrazek, Galerie, VZDY, ORG, NIKDY, UCASTNIK
|
from galerie.models import Soubor, Galerie, VZDY, ORG, NIKDY, UCASTNIK
|
||||||
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
|
||||||
|
|
@ -29,14 +29,14 @@ def prepnout_fotogalerii_do_org_rezimu(modeladmin, request, queryset):
|
||||||
'Přepnout do režimu úprav (zneveřejní galerii)'
|
'Přepnout do režimu úprav (zneveřejní galerii)'
|
||||||
|
|
||||||
class GalerieInline(admin.TabularInline):
|
class GalerieInline(admin.TabularInline):
|
||||||
model = Obrazek
|
model = Soubor
|
||||||
fields = ['soubor', 'nazev', 'popis', 'typ', 'poradi']
|
fields = ['soubor', 'nazev', 'popis', 'typ', 'poradi']
|
||||||
readonly_fields = ['nazev']
|
readonly_fields = ['nazev']
|
||||||
formfield_overrides = {
|
formfield_overrides = {
|
||||||
models.TextField: {'widget': forms.TextInput},
|
models.TextField: {'widget': forms.TextInput},
|
||||||
}
|
}
|
||||||
|
|
||||||
class ObrazekAdmin(admin.ModelAdmin):
|
class SouborAdmin(admin.ModelAdmin):
|
||||||
list_display = ('soubor', 'nazev', 'popis', 'poradi')
|
list_display = ('soubor', 'nazev', 'popis', 'poradi')
|
||||||
search_fields = ['nazev','popis']
|
search_fields = ['nazev','popis']
|
||||||
|
|
||||||
|
|
@ -50,5 +50,5 @@ class GalerieAdmin(admin.ModelAdmin):
|
||||||
save_on_top = True
|
save_on_top = True
|
||||||
ordering = ['galerie_up__nazev', 'poradi']
|
ordering = ['galerie_up__nazev', 'poradi']
|
||||||
|
|
||||||
admin.site.register(Obrazek, ObrazekAdmin)
|
admin.site.register(Soubor, SouborAdmin)
|
||||||
admin.site.register(Galerie, GalerieAdmin)
|
admin.site.register(Galerie, GalerieAdmin)
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,7 @@ def galerie_filename(self, filename):
|
||||||
|
|
||||||
return os.path.join(*cesta)
|
return os.path.join(*cesta)
|
||||||
|
|
||||||
# Technicky misnomer: takový `Obrazek` může být i videjko a výhledově i něco dalšího…
|
class Soubor(models.Model):
|
||||||
class Obrazek(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. 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.")
|
||||||
|
|
@ -71,6 +70,7 @@ class Obrazek(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Obrázek'
|
verbose_name = 'Obrázek'
|
||||||
verbose_name_plural = 'Obrázky'
|
verbose_name_plural = 'Obrázky'
|
||||||
|
db_table = 'galerie_obrazek' # FIXME: přejmenovat
|
||||||
ordering = ['nazev'] #FIXME: zohlednit pořadí a asi i příslušnost ke galerii
|
ordering = ['nazev'] #FIXME: zohlednit pořadí a asi i příslušnost ke galerii
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
|
|
@ -78,7 +78,7 @@ class Obrazek(models.Model):
|
||||||
# (a pak se podle něj taky řadí)
|
# (a pak se podle něj taky řadí)
|
||||||
if self.nazev is None:
|
if self.nazev is None:
|
||||||
self.nazev = os.path.basename(self.soubor.name)
|
self.nazev = os.path.basename(self.soubor.name)
|
||||||
super(Obrazek, self).save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
def jako_bazmek(self):
|
def jako_bazmek(self):
|
||||||
"""
|
"""
|
||||||
|
|
@ -97,7 +97,7 @@ class Galerie(models.Model):
|
||||||
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)
|
||||||
popis = models.TextField('Popis', blank = True, null = True)
|
popis = models.TextField('Popis', blank = True, null = True)
|
||||||
titulni_obrazek = models.ForeignKey(Obrazek, 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 = ORG, 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)
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ from imagekit.processors import ResizeToFit, Transpose
|
||||||
|
|
||||||
HTML = str | SafeString
|
HTML = str | SafeString
|
||||||
|
|
||||||
from galerie.models import Obrazek as DbObrazek
|
from galerie.models import Soubor
|
||||||
|
|
||||||
class ZobrazitelnyBazmek(abc.ABC):
|
class ZobrazitelnyBazmek(abc.ABC):
|
||||||
def __init__(self, db_objekt):
|
def __init__(self, db_objekt):
|
||||||
|
|
@ -128,13 +128,13 @@ class DummyBazmek(ZobrazitelnyBazmek):
|
||||||
attrs = _fmt_attrs(kwargs)
|
attrs = _fmt_attrs(kwargs)
|
||||||
return format_html(r'<img src="{}" {} />', self.placeholder, attrs)
|
return format_html(r'<img src="{}" {} />', self.placeholder, attrs)
|
||||||
|
|
||||||
def tipniTyp(soubor) -> DbObrazek.Typ:
|
def tipniTyp(soubor) -> Soubor.Typ:
|
||||||
from PIL import Image, UnidentifiedImageError
|
from PIL import Image, UnidentifiedImageError
|
||||||
try:
|
try:
|
||||||
Image.open(soubor)
|
Image.open(soubor)
|
||||||
return DbObrazek.Typ.OBRAZEK
|
return Soubor.Typ.OBRAZEK
|
||||||
except UnidentifiedImageError:
|
except UnidentifiedImageError:
|
||||||
return DbObrazek.Typ.NEVIM
|
return Soubor.Typ.NEVIM
|
||||||
logger.warning("Nepodařilo se tipnout typ nečekaným způsobem!")
|
logger.warning("Nepodařilo se tipnout typ nečekaným způsobem!")
|
||||||
return DbObrazek.Typ.NEVIM
|
return Soubor.Typ.NEVIM
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ 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 Obrazek, Galerie, VZDY, ORG, UCASTNIK, NIKDY
|
from galerie.models import Soubor, Galerie, VZDY, ORG, UCASTNIK, NIKDY
|
||||||
from soustredeni.models import Soustredeni
|
from soustredeni.models import Soustredeni
|
||||||
from galerie.forms import KomentarForm, NewGalerieForm
|
from galerie.forms import KomentarForm, NewGalerieForm
|
||||||
|
|
||||||
|
|
@ -56,7 +56,7 @@ def nahled(request, pk, soustredeni):
|
||||||
podgalerie = Galerie.objects.filter(galerie_up = galerie).order_by('poradi')
|
podgalerie = Galerie.objects.filter(galerie_up = galerie).order_by('poradi')
|
||||||
podgalerie = podgalerie.filter(zobrazit__in=galerie_ke_zobrazeni(soustredeni, request))
|
podgalerie = podgalerie.filter(zobrazit__in=galerie_ke_zobrazeni(soustredeni, request))
|
||||||
|
|
||||||
obrazky = galerie.obrazek_set.all().order_by('poradi', 'nazev')
|
obrazky = galerie.soubor_set.all().order_by('poradi', 'nazev')
|
||||||
ma_se_zobrazit = zobrazit(galerie, request)
|
ma_se_zobrazit = zobrazit(galerie, request)
|
||||||
if not ma_se_zobrazit: raise Http404("Galerie sice existuje, ale my se tváříme, že ne :-D")
|
if not ma_se_zobrazit: raise Http404("Galerie sice existuje, ale my se tváříme, že ne :-D")
|
||||||
|
|
||||||
|
|
@ -95,10 +95,10 @@ def detail(request, pk, fotka, soustredeni):
|
||||||
soustredeni = top_galerie(galerie).soustredeni
|
soustredeni = top_galerie(galerie).soustredeni
|
||||||
ma_se_zobrazit = zobrazit(galerie, request)
|
ma_se_zobrazit = zobrazit(galerie, request)
|
||||||
if not ma_se_zobrazit: raise Http404("Obrázek neukážu!")
|
if not ma_se_zobrazit: raise Http404("Obrázek neukážu!")
|
||||||
obrazek = get_object_or_404(Obrazek, pk=fotka)
|
obrazek = get_object_or_404(Soubor, pk=fotka)
|
||||||
|
|
||||||
# Pořadí není povinné. FIXME: `nazev` je zavádějící… Ale tohle je kanonické pořadí obrázků v galerii…
|
# Pořadí není povinné. FIXME: `nazev` je zavádějící… Ale tohle je kanonické pořadí obrázků v galerii…
|
||||||
obrazky = galerie.obrazek_set.all().order_by('poradi', 'nazev')
|
obrazky = galerie.soubor_set.all().order_by('poradi', 'nazev')
|
||||||
obrazky = list(obrazky)
|
obrazky = list(obrazky)
|
||||||
index_obrazku = obrazky.index(obrazek)
|
index_obrazku = obrazky.index(obrazek)
|
||||||
# Podle mě se nemůže stát, že by volání výš selhalo, kdyžtak shodí web. (původně to byl explicitně ošetřený stav dávající 404)
|
# Podle mě se nemůže stát, že by volání výš selhalo, kdyžtak shodí web. (původně to byl explicitně ošetřený stav dávající 404)
|
||||||
|
|
@ -186,7 +186,7 @@ def new_galerie(request, galerie, soustredeni):
|
||||||
# zpracovani obrazku v galerii
|
# zpracovani obrazku v galerii
|
||||||
from galerie.typy import tipniTyp
|
from galerie.typy import tipniTyp
|
||||||
for obr in request.FILES.getlist('obr'):
|
for obr in request.FILES.getlist('obr'):
|
||||||
o = Obrazek()
|
o = Soubor()
|
||||||
o.soubor = obr
|
o.soubor = obr
|
||||||
o.typ = tipniTyp(obr)
|
o.typ = tipniTyp(obr)
|
||||||
o.nazev = str(obr)
|
o.nazev = str(obr)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue