Browse Source

Opraveno odsazování dvojmezerami

export_seznamu_prednasek
LEdoian 5 years ago
parent
commit
dc4fced39f
  1. 91
      galerie/models.py
  2. 161
      galerie/views.py
  3. 16
      prednasky/views.py

91
galerie/models.py

@ -47,13 +47,13 @@ def obrazek_filename(self, filename):
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)
@ -61,15 +61,15 @@ class Obrazek(models.Model):
poradi = models.IntegerField('Pořadí', blank=True, null=True) poradi = models.IntegerField('Pořadí', blank=True, null=True)
def __unicode__(self): def __unicode__(self):
return unicode(self.obrazek_velky.name) return unicode(self.obrazek_velky.name)
class Meta: class Meta:
verbose_name = 'Obrázek' verbose_name = 'Obrázek'
verbose_name_plural = 'Obrázky' verbose_name_plural = 'Obrázky'
ordering = ['nazev'] ordering = ['nazev']
def obrazek_maly_tag(self): def obrazek_maly_tag(self):
return u'<img src="{}">'.format(self.obrazek_maly.url) return u'<img src="{}">'.format(self.obrazek_maly.url)
obrazek_maly_tag.short_description = "Náhled" obrazek_maly_tag.short_description = "Náhled"
obrazek_maly_tag.allow_tags = True obrazek_maly_tag.allow_tags = True
@ -80,43 +80,42 @@ class Obrazek(models.Model):
self.nazev = os.path.basename(self.obrazek_velky.name) self.nazev = os.path.basename(self.obrazek_velky.name)
super(Obrazek, self).save(*args, **kwargs) super(Obrazek, self).save(*args, **kwargs)
class Galerie(models.Model): class Galerie(models.Model):
nazev = models.CharField('Název', max_length=100) nazev = models.CharField('Název', max_length=100)
datum_vytvoreni = models.DateTimeField('Datum vytvoření', auto_now_add = True) datum_vytvoreni = models.DateTimeField('Datum vytvoření', auto_now_add = True)
datum_zmeny = models.DateTimeField('Datum poslední změny', auto_now = True) datum_zmeny = models.DateTimeField('Datum poslední změny', auto_now = True)
popis = models.TextField('Popis', blank = True, null = 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) titulni_obrazek = models.ForeignKey(Obrazek, blank = True, null = True, related_name = "+", on_delete = models.SET_NULL)
zobrazit = models.IntegerField('Zobrazit?', default = ORG, choices = VIDITELNOST) zobrazit = models.IntegerField('Zobrazit?', default = ORG, choices = VIDITELNOST)
galerie_up = models.ForeignKey('Galerie', blank = True, null = True) galerie_up = models.ForeignKey('Galerie', blank = True, null = True)
soustredeni = models.ForeignKey(Soustredeni, blank = True, null = True) soustredeni = models.ForeignKey(Soustredeni, 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): def __unicode__(self):
return self.nazev return self.nazev
class Meta: class Meta:
verbose_name = 'Galerie' verbose_name = 'Galerie'
verbose_name_plural = 'Galerie' verbose_name_plural = 'Galerie'
#def link_na_preview(self): #def link_na_preview(self):
#"""Odkaz na galerii, používá se v admin rozhranní. """ #"""Odkaz na galerii, používá se v admin rozhranní. """
#return '<a href="/fotogalerie/galerie/%s/">Preview</a>' % self.id #return '<a href="/fotogalerie/galerie/%s/">Preview</a>' % self.id
#link_na_preview.allow_tags = True #link_na_preview.allow_tags = True
#link_na_preview.short_description = 'Zobrazit galerii' #link_na_preview.short_description = 'Zobrazit galerii'
# #
#def je_publikovano(self): #def je_publikovano(self):
#"""Vraci True, pokud je tato galerie publikovana. """ #"""Vraci True, pokud je tato galerie publikovana. """
#if self.zobrazit == VZDY: #if self.zobrazit == VZDY:
#return True #return True
#if self.zobrazit == PODLE_CLANKU: #if self.zobrazit == PODLE_CLANKU:
#for clanek in self.clanek_set.all(): #for clanek in self.clanek_set.all():
#if clanek.je_publikovano(): #if clanek.je_publikovano():
#return True #return True
#return False #return False
# #
#@staticmethod #@staticmethod
#def publikovane_galerie(): #def publikovane_galerie():
#"""Vraci galerie, ktere uz maji byt publikovane.""" #"""Vraci galerie, ktere uz maji byt publikovane."""
#clanky = Blog.models.Clanek.publikovane_clanky() #clanky = Blog.models.Clanek.publikovane_clanky()
#return Galerie.objects.filter(Q(zobrazit=VZDY) | (Q(clanek__in=clanky) & Q(zobrazit=PODLE_CLANKU))).distinct() #return Galerie.objects.filter(Q(zobrazit=VZDY) | (Q(clanek__in=clanky) & Q(zobrazit=PODLE_CLANKU))).distinct()

161
galerie/views.py

@ -72,89 +72,88 @@ def nahled(request, pk, soustredeni):
}) })
def detail(request, pk, fotka, soustredeni): def detail(request, pk, fotka, soustredeni):
"""Zobrazeni nahledu fotky s id 'fotka'.""" """Zobrazeni nahledu fotky s id 'fotka'."""
MAX_VYSKA = 900 MAX_VYSKA = 900
MAX_SIRKA = 900 MAX_SIRKA = 900
MAX_VYSKA_MALA = 100 MAX_VYSKA_MALA = 100
MAX_SIRKA_MALA = 200 MAX_SIRKA_MALA = 200
NAHLEDU = 1 NAHLEDU = 1
galerie = get_object_or_404(Galerie, pk=pk) galerie = get_object_or_404(Galerie, pk=pk)
preview = zobrazit(galerie, request) preview = zobrazit(galerie, request)
obrazek = get_object_or_404(Obrazek, pk=fotka) obrazek = get_object_or_404(Obrazek, pk=fotka)
obrazky = galerie.obrazek_set.all() obrazky = galerie.obrazek_set.all()
# vytvoreni a obslouzeni formulare # vytvoreni a obslouzeni formulare
if request.method == 'POST': if request.method == 'POST':
form = KomentarForm(request.POST) form = KomentarForm(request.POST)
if form.is_valid(): if form.is_valid():
obrazek.popis = form.cleaned_data['komentar'] obrazek.popis = form.cleaned_data['komentar']
obrazek.save() 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]
else: else:
predchozi_galerie = None form = KomentarForm({'komentar': obrazek.popis})
if (znacka+1) == len(obrazky):
nasledujici_galerie = Galerie.objects.\ # Poradi aktualniho obrazku v galerii/stitku.
filter(galerie_up=galerie.galerie_up).\ for i in range(len(obrazky)):
filter(poradi=(galerie.poradi+1)) if obrazky[i] == obrazek:
if nasledujici_galerie: znacka = i
nasledujici_galerie = nasledujici_galerie[0] 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: else:
nasledujici_galerie = None obrazky_predchozi = obrazky[0:znacka]
if galerie.poradi > 1:
predchozi_galerie = Galerie.objects.\
filter(galerie_up=galerie.galerie_up).\
# Preskalovani obrazku do vybraneho prostoru. filter(poradi=(galerie.poradi-1))
vyska = obrazek.obrazek_stredni.height if predchozi_galerie:
sirka = obrazek.obrazek_stredni.width predchozi_galerie = predchozi_galerie[0]
if vyska > MAX_VYSKA: else:
sirka = sirka * MAX_VYSKA / vyska predchozi_galerie = None
vyska = MAX_VYSKA if (znacka+1) == len(obrazky):
if sirka > MAX_SIRKA: nasledujici_galerie = Galerie.objects.\
vyska = vyska * MAX_SIRKA / sirka filter(galerie_up=galerie.galerie_up).\
sirka = MAX_SIRKA filter(poradi=(galerie.poradi+1))
if nasledujici_galerie:
return render(request, 'galerie/Galerie.html', nasledujici_galerie = nasledujici_galerie[0]
{'galerie' : galerie, else:
'predchozi_galerie' : predchozi_galerie, nasledujici_galerie = None
'nasledujici_galerie' : nasledujici_galerie,
'obrazek' : obrazek,
'vyska' : vyska,
'sirka' : sirka, # Preskalovani obrazku do vybraneho prostoru.
'obrazky_predchozi' : obrazky_predchozi, vyska = obrazek.obrazek_stredni.height
'obrazky_dalsi' : obrazky_dalsi, sirka = obrazek.obrazek_stredni.width
'preview' : preview, if vyska > MAX_VYSKA:
'form' : form, sirka = sirka * MAX_VYSKA / vyska
'cesta': cesta_od_korene(galerie), 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): def new_galerie(request, galerie, soustredeni):

16
prednasky/views.py

@ -20,14 +20,14 @@ def newPrednaska(request):
if form.is_valid(): if form.is_valid():
jmeno = form.cleaned_data['ucastnik'] jmeno = form.cleaned_data['ucastnik']
for i in request.POST: for i in request.POST:
if i[0] == 'q': if i[0] == 'q':
hlasovani = Hlasovani() hlasovani = Hlasovani()
print("q:"+i[1:]) print("q:"+i[1:])
hlasovani.prednaska = Prednaska.objects.filter(pk = int(i[1:]))[0] hlasovani.prednaska = Prednaska.objects.filter(pk = int(i[1:]))[0]
hlasovani.body = int(request.POST[i]) hlasovani.body = int(request.POST[i])
hlasovani.ucastnik = jmeno hlasovani.ucastnik = jmeno
hlasovani.seznam = seznam hlasovani.seznam = seznam
hlasovani.save() hlasovani.save()
# presmerovani na prave vzniklou galerii # presmerovani na prave vzniklou galerii
return HttpResponseRedirect('./hotovo') return HttpResponseRedirect('./hotovo')

Loading…
Cancel
Save