diff --git a/galerie/models.py b/galerie/models.py
index 4c08c4f2..3cc4b682 100644
--- a/galerie/models.py
+++ b/galerie/models.py
@@ -31,36 +31,54 @@ def obrazek_filename_velky():
def obrazek_filename(self, filename):
gal = self.galerie
cislo_gal = force_unicode(gal.pk)
- cesta = ""
- while(not gal.soustredeni):
+
+ # najdi kořenovou galerii
+ while (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):
- obrazek_velky = models.ImageField(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.")
- obrazek_stredni = ImageSpecField(source='obrazek_velky',
- processors=[Transpose(Transpose.AUTO), ResizeToFit(900, 675, upscale=False)],
- 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)
- 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)
- poradi = models.IntegerField('Pořadí', blank = True, null = True)
- def __unicode__(self):
- return self.nazev + " -- " + unicode(self.obrazek_velky.name)
- class Meta:
- verbose_name = 'Obrázek'
- verbose_name_plural = 'Obrázky'
- ordering = ['nazev']
-
- def obrazek_maly_tag(self):
- return u''.format(self.obrazek_maly.url)
- obrazek_maly_tag.short_description = "Náhled"
- obrazek_maly_tag.allow_tags = True
+ obrazek_velky = models.ImageField(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.")
+ obrazek_stredni = ImageSpecField(source='obrazek_velky',
+ processors=[Transpose(Transpose.AUTO), ResizeToFit(900, 675, upscale=False)],
+ 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)
+ 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)
+ poradi = models.IntegerField('Pořadí', blank=True, null=True)
+
+ def __unicode__(self):
+ return unicode(self.obrazek_velky.name)
+
+ class Meta:
+ verbose_name = 'Obrázek'
+ verbose_name_plural = 'Obrázky'
+ ordering = ['nazev']
+
+ def obrazek_maly_tag(self):
+ return u''.format(self.obrazek_maly.url)
+ obrazek_maly_tag.short_description = "Náhled"
+ 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)