Organizator | model
This commit is contained in:
		
							parent
							
								
									29a65b064f
								
							
						
					
					
						commit
						1777656d27
					
				
					 1 changed files with 69 additions and 0 deletions
				
			
		|  | @ -12,6 +12,10 @@ from django.utils.text import slugify | |||
| from django.core.urlresolvers import reverse | ||||
| from django.core.cache import cache | ||||
| 
 | ||||
| from PIL import Image | ||||
| import os | ||||
| from cStringIO import StringIO | ||||
| from django.core.files.base import ContentFile | ||||
| 
 | ||||
| from django_countries.fields import CountryField | ||||
| from solo.models import SingletonModel | ||||
|  | @ -637,3 +641,68 @@ class Novinky(models.Model): | |||
|         verbose_name = 'Novinka' | ||||
|         verbose_name_plural = 'Novinky' | ||||
| 
 | ||||
| 
 | ||||
| @python_2_unicode_compatible | ||||
| class Organizator(models.Model): | ||||
|     user = models.OneToOneField(settings.AUTH_USER_MODEL, verbose_name='Osoba', | ||||
|             help_text = 'Vyber účet spřažený s organizátorem.') | ||||
|     prezdivka = models.CharField('Přezdívka', max_length = 32, | ||||
|             null = True, blank = True) | ||||
|     organizuje_od_roku = models.IntegerField('Organizuje od roku', | ||||
|             null = True, blank = True) | ||||
|     organizuje_do_roku = models.IntegerField('Organizuje do roku', | ||||
|             null = True, blank = True) | ||||
|     studuje = models.CharField('Studuje', max_length = 256, | ||||
|             null = True, blank = True) | ||||
|     strucny_popis_organizatora = models.TextField('Stručný popis organizátora', | ||||
|             null = True, blank = True) | ||||
|     foto = models.ImageField('Fotografie organizátora', | ||||
|             upload_to='image_organizatori/%Y/', null = True, blank = True, | ||||
|             help_text = 'Vlož fotografii organizátora o libovoné velikosti') | ||||
|     foto_male = models.ImageField(upload_to='image_organizatori/male/%Y/', | ||||
|             null = True, blank = True, editable = False) | ||||
| 
 | ||||
|     def __str__(self): | ||||
|         return str(self.user) | ||||
| 
 | ||||
|     class Meta: | ||||
|         verbose_name = 'Organizátor' | ||||
|         verbose_name_plural = 'Organizátoři' | ||||
| 
 | ||||
|     def save(self): | ||||
|         original = Image.open(self.foto) | ||||
|         jmeno = os.path.basename(self.foto.file.name) | ||||
|         Organizator._vyrobMiniaturu(original, jmeno, 500, self.foto) | ||||
|         Organizator._vyrobMiniaturu(original, jmeno, 200, self.foto_male) | ||||
|         super(Organizator, self).save() | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def _vyrobMiniaturu(original, jmeno, maximum, field): | ||||
|         zmensenina = Organizator._zmensiObrazek(original, maximum) | ||||
|         f = StringIO() | ||||
|         try: | ||||
|             zmensenina.save(f, format=original.format) | ||||
|             data = ContentFile(f.getvalue()) | ||||
|         finally: | ||||
|             f.close() | ||||
|         field.save(jmeno, data, save = False) | ||||
|              | ||||
|     @staticmethod | ||||
|     def _zmensiObrazek(original, maximum): | ||||
|         """Preskaluje obrazek tak, aby byl zachovan pomer stran | ||||
|         a zadny rozmer nepresahoval maxRozmer. Pokud zadny rozmer | ||||
|         nepresahuje maxRozmer, tak vrati puvodni obrazek | ||||
|         (tj. nedojde ke zvetseni obrazku).""" | ||||
|         novaVelikost = Organizator._zmensiVelikost(original.size, maximum) | ||||
|         return original.resize(novaVelikost, Image.ANTIALIAS) | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def _zmensiVelikost(velikost, maximum): | ||||
|         maximum = float(maximum) | ||||
|         w, h = velikost | ||||
|         soucasneMaximum = max(w, h) | ||||
|         if soucasneMaximum <= maximum: | ||||
|             return velikost | ||||
|         pomer = maximum/soucasneMaximum | ||||
|         return (int(w * pomer), int(h * pomer)) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Bc. Petr Pecha
						Bc. Petr Pecha