From dc4fced39f2c01566e7a745af2fee25ebde0b3c9 Mon Sep 17 00:00:00 2001 From: LEdoian Date: Sat, 11 May 2019 01:49:01 +0200 Subject: [PATCH] =?UTF-8?q?Opraveno=20odsazov=C3=A1n=C3=AD=20dvojmezerami?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- galerie/models.py | 91 +++++++++++++------------ galerie/views.py | 161 ++++++++++++++++++++++----------------------- prednasky/views.py | 16 ++--- 3 files changed, 133 insertions(+), 135 deletions(-) diff --git a/galerie/models.py b/galerie/models.py index b6ff4c5c..4a90b131 100644 --- a/galerie/models.py +++ b/galerie/models.py @@ -47,13 +47,13 @@ def obrazek_filename(self, filename): 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.") + 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}) + 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}) + 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) @@ -61,15 +61,15 @@ class Obrazek(models.Model): poradi = models.IntegerField('Pořadí', blank=True, null=True) def __unicode__(self): - return unicode(self.obrazek_velky.name) + return unicode(self.obrazek_velky.name) class Meta: - verbose_name = 'Obrázek' - verbose_name_plural = 'Obrázky' - ordering = ['nazev'] + verbose_name = 'Obrázek' + verbose_name_plural = 'Obrázky' + ordering = ['nazev'] def obrazek_maly_tag(self): - return u''.format(self.obrazek_maly.url) + return u''.format(self.obrazek_maly.url) obrazek_maly_tag.short_description = "Náhled" obrazek_maly_tag.allow_tags = True @@ -80,43 +80,42 @@ class Obrazek(models.Model): self.nazev = os.path.basename(self.obrazek_velky.name) super(Obrazek, self).save(*args, **kwargs) - class Galerie(models.Model): - nazev = models.CharField('Název', max_length=100) - datum_vytvoreni = models.DateTimeField('Datum vytvoření', auto_now_add = True) - datum_zmeny = models.DateTimeField('Datum poslední změny', auto_now = True) - popis = models.TextField('Popis', blank = True, null = True) - titulni_obrazek = models.ForeignKey(Obrazek, blank = True, null = True, related_name = "+", on_delete = models.SET_NULL) - zobrazit = models.IntegerField('Zobrazit?', default = ORG, choices = VIDITELNOST) - galerie_up = models.ForeignKey('Galerie', blank = True, null = True) - soustredeni = models.ForeignKey(Soustredeni, blank = True, null = True) - poradi = models.IntegerField('Pořadí', blank = True, null = True) - - def __unicode__(self): - return self.nazev - class Meta: - verbose_name = 'Galerie' - verbose_name_plural = 'Galerie' - - #def link_na_preview(self): - #"""Odkaz na galerii, používá se v admin rozhranní. """ - #return 'Preview' % self.id - #link_na_preview.allow_tags = True - #link_na_preview.short_description = 'Zobrazit galerii' + nazev = models.CharField('Název', max_length=100) + datum_vytvoreni = models.DateTimeField('Datum vytvoření', auto_now_add = True) + datum_zmeny = models.DateTimeField('Datum poslední změny', auto_now = True) + popis = models.TextField('Popis', blank = True, null = True) + titulni_obrazek = models.ForeignKey(Obrazek, blank = True, null = True, related_name = "+", on_delete = models.SET_NULL) + zobrazit = models.IntegerField('Zobrazit?', default = ORG, choices = VIDITELNOST) + galerie_up = models.ForeignKey('Galerie', blank = True, null = True) + soustredeni = models.ForeignKey(Soustredeni, blank = True, null = True) + poradi = models.IntegerField('Pořadí', blank = True, null = True) + + def __unicode__(self): + return self.nazev + class Meta: + verbose_name = 'Galerie' + verbose_name_plural = 'Galerie' + + #def link_na_preview(self): + #"""Odkaz na galerii, používá se v admin rozhranní. """ + #return 'Preview' % self.id + #link_na_preview.allow_tags = True + #link_na_preview.short_description = 'Zobrazit galerii' # - #def je_publikovano(self): - #"""Vraci True, pokud je tato galerie publikovana. """ - #if self.zobrazit == VZDY: - #return True - #if self.zobrazit == PODLE_CLANKU: - #for clanek in self.clanek_set.all(): - #if clanek.je_publikovano(): - #return True - #return False + #def je_publikovano(self): + #"""Vraci True, pokud je tato galerie publikovana. """ + #if self.zobrazit == VZDY: + #return True + #if self.zobrazit == PODLE_CLANKU: + #for clanek in self.clanek_set.all(): + #if clanek.je_publikovano(): + #return True + #return False # - #@staticmethod - #def publikovane_galerie(): - #"""Vraci galerie, ktere uz maji byt publikovane.""" - #clanky = Blog.models.Clanek.publikovane_clanky() - #return Galerie.objects.filter(Q(zobrazit=VZDY) | (Q(clanek__in=clanky) & Q(zobrazit=PODLE_CLANKU))).distinct() + #@staticmethod + #def publikovane_galerie(): + #"""Vraci galerie, ktere uz maji byt publikovane.""" + #clanky = Blog.models.Clanek.publikovane_clanky() + #return Galerie.objects.filter(Q(zobrazit=VZDY) | (Q(clanek__in=clanky) & Q(zobrazit=PODLE_CLANKU))).distinct() diff --git a/galerie/views.py b/galerie/views.py index 666f3da5..729ac3b8 100644 --- a/galerie/views.py +++ b/galerie/views.py @@ -72,89 +72,88 @@ def nahled(request, pk, soustredeni): }) def detail(request, pk, fotka, soustredeni): - """Zobrazeni nahledu fotky s id 'fotka'.""" - MAX_VYSKA = 900 - MAX_SIRKA = 900 - MAX_VYSKA_MALA = 100 - MAX_SIRKA_MALA = 200 - NAHLEDU = 1 - - galerie = get_object_or_404(Galerie, pk=pk) - preview = zobrazit(galerie, request) - obrazek = get_object_or_404(Obrazek, pk=fotka) - obrazky = galerie.obrazek_set.all() - - # vytvoreni a obslouzeni formulare - if request.method == 'POST': - form = KomentarForm(request.POST) - if form.is_valid(): - obrazek.popis = form.cleaned_data['komentar'] - obrazek.save() - else: - form = KomentarForm({'komentar': obrazek.popis}) - - # Poradi aktualniho obrazku v galerii/stitku. - for i in range(len(obrazky)): - if obrazky[i] == obrazek: - znacka = i - break - else: - # Obrazek neni v galerii/stitku. - raise Http404 - - - # Nacteni okolnich obrazku a galerii - # TODO vyjmout zjisteni predchozich a nasledujicich galerii - # a udelat z toho funkci, ktera se pouzije u nahledu - predchozi_galerie = None - nasledujici_galerie = None - obrazky_dalsi = obrazky[znacka+1:znacka+NAHLEDU+1] - if (znacka+1) > NAHLEDU: - obrazky_predchozi = obrazky[znacka-NAHLEDU:znacka] - else: - obrazky_predchozi = obrazky[0:znacka] - if galerie.poradi > 1: - predchozi_galerie = Galerie.objects.\ - filter(galerie_up=galerie.galerie_up).\ - filter(poradi=(galerie.poradi-1)) - if predchozi_galerie: - predchozi_galerie = predchozi_galerie[0] + """Zobrazeni nahledu fotky s id 'fotka'.""" + MAX_VYSKA = 900 + MAX_SIRKA = 900 + MAX_VYSKA_MALA = 100 + MAX_SIRKA_MALA = 200 + NAHLEDU = 1 + + galerie = get_object_or_404(Galerie, pk=pk) + preview = zobrazit(galerie, request) + obrazek = get_object_or_404(Obrazek, pk=fotka) + obrazky = galerie.obrazek_set.all() + + # vytvoreni a obslouzeni formulare + if request.method == 'POST': + form = KomentarForm(request.POST) + if form.is_valid(): + obrazek.popis = form.cleaned_data['komentar'] + obrazek.save() else: - predchozi_galerie = None - if (znacka+1) == len(obrazky): - nasledujici_galerie = Galerie.objects.\ - filter(galerie_up=galerie.galerie_up).\ - filter(poradi=(galerie.poradi+1)) - if nasledujici_galerie: - nasledujici_galerie = nasledujici_galerie[0] + form = KomentarForm({'komentar': obrazek.popis}) + + # Poradi aktualniho obrazku v galerii/stitku. + for i in range(len(obrazky)): + if obrazky[i] == obrazek: + znacka = i + break + else: + # Obrazek neni v galerii/stitku. + raise Http404 + + # Nacteni okolnich obrazku a galerii + # TODO vyjmout zjisteni predchozich a nasledujicich galerii + # a udelat z toho funkci, ktera se pouzije u nahledu + predchozi_galerie = None + nasledujici_galerie = None + obrazky_dalsi = obrazky[znacka+1:znacka+NAHLEDU+1] + if (znacka+1) > NAHLEDU: + obrazky_predchozi = obrazky[znacka-NAHLEDU:znacka] else: - nasledujici_galerie = None - - - - # Preskalovani obrazku do vybraneho prostoru. - vyska = obrazek.obrazek_stredni.height - sirka = obrazek.obrazek_stredni.width - if vyska > MAX_VYSKA: - sirka = sirka * MAX_VYSKA / vyska - vyska = MAX_VYSKA - if sirka > MAX_SIRKA: - vyska = vyska * MAX_SIRKA / sirka - sirka = MAX_SIRKA - - return render(request, 'galerie/Galerie.html', - {'galerie' : galerie, - 'predchozi_galerie' : predchozi_galerie, - 'nasledujici_galerie' : nasledujici_galerie, - 'obrazek' : obrazek, - 'vyska' : vyska, - 'sirka' : sirka, - 'obrazky_predchozi' : obrazky_predchozi, - 'obrazky_dalsi' : obrazky_dalsi, - 'preview' : preview, - 'form' : form, - 'cesta': cesta_od_korene(galerie), - }) + obrazky_predchozi = obrazky[0:znacka] + if galerie.poradi > 1: + predchozi_galerie = Galerie.objects.\ + filter(galerie_up=galerie.galerie_up).\ + filter(poradi=(galerie.poradi-1)) + if predchozi_galerie: + predchozi_galerie = predchozi_galerie[0] + else: + predchozi_galerie = None + if (znacka+1) == len(obrazky): + nasledujici_galerie = Galerie.objects.\ + filter(galerie_up=galerie.galerie_up).\ + filter(poradi=(galerie.poradi+1)) + if nasledujici_galerie: + nasledujici_galerie = nasledujici_galerie[0] + else: + nasledujici_galerie = None + + + + # Preskalovani obrazku do vybraneho prostoru. + vyska = obrazek.obrazek_stredni.height + sirka = obrazek.obrazek_stredni.width + if vyska > MAX_VYSKA: + sirka = sirka * MAX_VYSKA / vyska + vyska = MAX_VYSKA + if sirka > MAX_SIRKA: + vyska = vyska * MAX_SIRKA / sirka + sirka = MAX_SIRKA + + return render(request, 'galerie/Galerie.html', + {'galerie' : galerie, + 'predchozi_galerie' : predchozi_galerie, + 'nasledujici_galerie' : nasledujici_galerie, + 'obrazek' : obrazek, + 'vyska' : vyska, + 'sirka' : sirka, + 'obrazky_predchozi' : obrazky_predchozi, + 'obrazky_dalsi' : obrazky_dalsi, + 'preview' : preview, + 'form' : form, + 'cesta': cesta_od_korene(galerie), + }) def new_galerie(request, galerie, soustredeni): diff --git a/prednasky/views.py b/prednasky/views.py index 36239cfa..a5dbbd76 100644 --- a/prednasky/views.py +++ b/prednasky/views.py @@ -20,14 +20,14 @@ def newPrednaska(request): if form.is_valid(): jmeno = form.cleaned_data['ucastnik'] for i in request.POST: - if i[0] == 'q': - hlasovani = Hlasovani() - print("q:"+i[1:]) - hlasovani.prednaska = Prednaska.objects.filter(pk = int(i[1:]))[0] - hlasovani.body = int(request.POST[i]) - hlasovani.ucastnik = jmeno - hlasovani.seznam = seznam - hlasovani.save() + if i[0] == 'q': + hlasovani = Hlasovani() + print("q:"+i[1:]) + hlasovani.prednaska = Prednaska.objects.filter(pk = int(i[1:]))[0] + hlasovani.body = int(request.POST[i]) + hlasovani.ucastnik = jmeno + hlasovani.seznam = seznam + hlasovani.save() # presmerovani na prave vzniklou galerii return HttpResponseRedirect('./hotovo')