WIP sortítko galerií
potřebuji otestovat na testwebu :-)
This commit is contained in:
		
							parent
							
								
									8bde5c7e4b
								
							
						
					
					
						commit
						88695313c1
					
				
					 1 changed files with 29 additions and 0 deletions
				
			
		|  | @ -100,3 +100,32 @@ class Galerie(models.Model): | |||
| 	class Meta: | ||||
| 		verbose_name = 'Galerie' | ||||
| 		verbose_name_plural = 'Galerie' | ||||
| 
 | ||||
| 	# TODO: patří to spíš sem, nebo do nějakých utils? | ||||
| 	def setrid_galerii_podle_exifu(self): | ||||
| 		"""Setřídí galerii podle data v EXIF tazích. | ||||
| 
 | ||||
| 		Velmi experimentální, zatím pro použití jen webařem v shellu (důvod: | ||||
| 		EXIF se trochu blbě parsuje, není jasné, jestli se má použít DateTime, | ||||
| 		DateTimeOriginal nebo DateTimeDigitized, EXIF nemusí mít informace o | ||||
| 		časové zóně a tenhle kód časovou zónu ignoruje, vůbec nezachovává | ||||
| 		pořadí).""" | ||||
| 
 | ||||
| 		from PIL import Image, ExifTags, UnidentifiedImageError | ||||
| 		from datetime import datetime | ||||
| 		EXIF_DATETIME_FMT = "%Y:%m:%d %H:%M:%S" | ||||
| 
 | ||||
| 		self.obrazek_set.update(poradi=None) | ||||
| 		for obrazek in self.obrazek_set.all(): | ||||
| 			try: | ||||
| 				obr = Image.open(obr) | ||||
| 			except UnidentifiedImageError as e: | ||||
| 				raise ValueError from e | ||||
| 
 | ||||
| 			exif = obr.getexif() # Pokud tam není, tak si Pillow podle zdrojáků vyhaluzí prázdný. | ||||
| 			date_str = exif.get(ExifTags.DateTime, None) or exif.get(ExifTags.DateTimeOriginal, None) or exif.get(ExifTags.DateTimeDigitized, None) | ||||
| 			if date_str is None: continue | ||||
| 			dt = datetime.strptime(date_str, EXIF_DATETIME_FMT) | ||||
| 			poradi = int(dt.strftime("1%d%H%M%S")) | ||||
| 			obrazek.poradi = poradi | ||||
| 			obrazek.save() | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 LEdoian
						LEdoian