Browse Source

Galerie: fix nahrávání fotek přes admin

* Obrázek si při save() vyplní název
* obrazek_filename() nespoléhá na to, že je každá galerie pod nějakým
    soustředěním
remotes/origin/upgrade1.9
Matěj Kocián 9 years ago
parent
commit
23aede313e
  1. 34
      galerie/models.py

34
galerie/models.py

@ -31,10 +31,19 @@ def obrazek_filename_velky():
def obrazek_filename(self, filename): def obrazek_filename(self, filename):
gal = self.galerie gal = self.galerie
cislo_gal = force_unicode(gal.pk) cislo_gal = force_unicode(gal.pk)
cesta = ""
while(not gal.soustredeni): # najdi kořenovou galerii
while (gal.galerie_up):
gal = gal.galerie_up gal = gal.galerie_up
return os.path.join('Galerie', "soustredeni_" + force_unicode(gal.soustredeni.pk), "galerie_" + cislo_gal, "velky", force_unicode(self.nazev))
# soustředění je v cestě jen pokud galerie pod nějaké patří
cesta = (
['Galerie'] +
(["soustredeni_" + force_unicode(gal.soustredeni.pk)] if gal.soustredeni else []) +
["galerie_" + cislo_gal, force_unicode(self.nazev)]
)
return os.path.join(*cesta)
class Obrazek(models.Model): class Obrazek(models.Model):
obrazek_velky = models.ImageField(upload_to=obrazek_filename, obrazek_velky = models.ImageField(upload_to=obrazek_filename,
@ -45,13 +54,15 @@ class Obrazek(models.Model):
obrazek_maly = ImageSpecField(source='obrazek_velky', obrazek_maly = ImageSpecField(source='obrazek_velky',
processors=[Transpose(Transpose.AUTO), ResizeToFit(167, 167, upscale=False)], processors=[Transpose(Transpose.AUTO), ResizeToFit(167, 167, upscale=False)],
options={'quality': 95}) 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)
galerie = models.ForeignKey('Galerie', blank=True, null=True) galerie = models.ForeignKey('Galerie', blank=True, null=True)
poradi = models.IntegerField('Pořadí', blank = True, null = True) poradi = models.IntegerField('Pořadí', blank=True, null=True)
def __unicode__(self): def __unicode__(self):
return self.nazev + " -- " + unicode(self.obrazek_velky.name) return unicode(self.obrazek_velky.name)
class Meta: class Meta:
verbose_name = 'Obrázek' verbose_name = 'Obrázek'
verbose_name_plural = 'Obrázky' verbose_name_plural = 'Obrázky'
@ -62,6 +73,13 @@ class Obrazek(models.Model):
obrazek_maly_tag.short_description = "Náhled" obrazek_maly_tag.short_description = "Náhled"
obrazek_maly_tag.allow_tags = True obrazek_maly_tag.allow_tags = True
def save(self, *args, **kwargs):
# 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í)
if self.nazev is None:
self.nazev = os.path.basename(self.obrazek_velky.name)
super(Obrazek, self).save(*args, **kwargs)
class Galerie(models.Model): class Galerie(models.Model):

Loading…
Cancel
Save