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
			
			
This commit is contained in:
		
							parent
							
								
									e3e77dc852
								
							
						
					
					
						commit
						23aede313e
					
				
					 1 changed files with 44 additions and 26 deletions
				
			
		|  | @ -31,36 +31,54 @@ 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, | ||||||
|     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', |     obrazek_stredni = ImageSpecField(source='obrazek_velky', | ||||||
|                                 processors=[Transpose(Transpose.AUTO), ResizeToFit(900, 675, upscale=False)], |                                   processors=[Transpose(Transpose.AUTO), ResizeToFit(900, 675, upscale=False)], | ||||||
|                                 options={'quality': 95}) |                                   options={'quality': 95}) | ||||||
|   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): |  | ||||||
|     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): |     def __unicode__(self): | ||||||
|     return u'<img src="{}">'.format(self.obrazek_maly.url) |           return unicode(self.obrazek_velky.name) | ||||||
|   obrazek_maly_tag.short_description = "Náhled" | 
 | ||||||
|   obrazek_maly_tag.allow_tags = True |     class Meta: | ||||||
|  |       verbose_name = 'Obrázek' | ||||||
|  |       verbose_name_plural = 'Obrázky' | ||||||
|  |       ordering = ['nazev'] | ||||||
|  | 
 | ||||||
|  |     def obrazek_maly_tag(self): | ||||||
|  |       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): | ||||||
|  |         # 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) | ||||||
| 
 | 
 | ||||||
|    |    | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Matěj Kocián
						Matěj Kocián