galerie | clone view, template + uprava pro M&M
This commit is contained in:
parent
ae93b7074d
commit
626e4f21a5
5 changed files with 177 additions and 2 deletions
|
@ -5,4 +5,7 @@
|
||||||
* zvolit velikosti velke a male fotky
|
* zvolit velikosti velke a male fotky
|
||||||
* vycteni EXIFu
|
* vycteni EXIFu
|
||||||
* razeni podle casu
|
* razeni podle casu
|
||||||
* uprava templatu
|
* uprava templatu (detail)
|
||||||
|
* hromadne nahravani fotek
|
||||||
|
* psani komentaru
|
||||||
|
* do CSS
|
||||||
|
|
|
@ -30,7 +30,7 @@ class Obrazek(models.Model):
|
||||||
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)
|
||||||
datum = models.DateTimeField('Datum pořízení fotografie', blank = False) # TODO zjistit z EXIFU
|
datum = models.DateTimeField('Datum pořízení fotografie', blank = True, null = True) # TODO zjistit z EXIFU
|
||||||
galerie = models.ForeignKey('Galerie')
|
galerie = models.ForeignKey('Galerie')
|
||||||
poradi = models.IntegerField('Pořadí', blank = True, null = True)
|
poradi = models.IntegerField('Pořadí', blank = True, null = True)
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
|
|
2
galerie/static/galerie/.gitignore
vendored
Normal file
2
galerie/static/galerie/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
images
|
||||||
|
lightbox
|
72
galerie/templates/galerie/GalerieNahled.html
Normal file
72
galerie/templates/galerie/GalerieNahled.html
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}{% block nadpis1a %}
|
||||||
|
{{galerie.nazev}} | Galerie TODO title
|
||||||
|
{% endblock %}{% endblock %}
|
||||||
|
|
||||||
|
{# TODO predelat pres context processor #}
|
||||||
|
{% block header %}soustredeni{% endblock %}
|
||||||
|
{% block menu_soustredeni %}selected{% endblock %}
|
||||||
|
{% block submenu %}{% include 'seminar/soustredeni/submenu.html' %}{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h2>{{galerie.nazev}}</h2>
|
||||||
|
|
||||||
|
{# podgalerie #}
|
||||||
|
{% if galerie.galerie_set.all or galerie.galerie_up %}
|
||||||
|
<h3> PODGALERIE </h3>
|
||||||
|
<ul>
|
||||||
|
{% if galerie.galerie_up %}
|
||||||
|
<li><a href="../{{galerie.galerie_up.pk}}">..</a>
|
||||||
|
{% endif %}
|
||||||
|
{% for galerie in galerie.galerie_set.all %}
|
||||||
|
{% if galerie.zobrazit < 1 or user.is_staff %}
|
||||||
|
<li><a href="../{{galerie.pk}}">{{galerie}}</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# obrazky v galerii #}
|
||||||
|
{% if galerie.obrazek_set.all %}
|
||||||
|
<table class="galerie_nahled">
|
||||||
|
{% for obrazek in galerie.obrazek_set.all %}
|
||||||
|
{% if forloop.counter|add:-1|divisibleby:3 %}
|
||||||
|
<tr>
|
||||||
|
{% endif %}
|
||||||
|
<td class="vystredeno">
|
||||||
|
<a title="Zobrazit tuto fotografii" href="./{{obrazek.pk}}#obsah"
|
||||||
|
class="jednoducha-galerie">
|
||||||
|
<img
|
||||||
|
src="{{obrazek.obrazek_maly.url}}"
|
||||||
|
width={% widthratio obrazek.obrazek_maly.width 200 167 %}
|
||||||
|
height={% widthratio obrazek.obrazek_maly.height 200 167 %} />
|
||||||
|
</a>
|
||||||
|
<!--<a href="{{obrazek.obrazek_velky.url}}"
|
||||||
|
class="javascript-galerie" data-lightbox="galerie" data-title="{{obrazek.popis}}"
|
||||||
|
style="display: none;">
|
||||||
|
<img
|
||||||
|
src="{{obrazek.obrazek_maly.url}}"
|
||||||
|
width={% widthratio obrazek.obrazek_maly.width 200 167 %}
|
||||||
|
height={% widthratio obrazek.obrazek_maly.height 200 167 %} />
|
||||||
|
</a>-->
|
||||||
|
</td>
|
||||||
|
{% if forloop.last %}
|
||||||
|
{% if not forloop.counter|divisibleby:3 %}
|
||||||
|
<td></td>
|
||||||
|
{% endif %}
|
||||||
|
{% if not forloop.counter|divisibleby:2 %}
|
||||||
|
<td></td>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% if forloop.counter|divisibleby:3 or forloop.last %}
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
{% else %}
|
||||||
|
<div class="zadne-vysledky">
|
||||||
|
V galerii nejsou žádné fotky.
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock content %}
|
98
galerie/views.py
Normal file
98
galerie/views.py
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
import random
|
||||||
|
|
||||||
|
from django.http import HttpResponse, Http404
|
||||||
|
from django.shortcuts import render, HttpResponseRedirect, get_object_or_404
|
||||||
|
from django.template import RequestContext
|
||||||
|
from galerie.models import Obrazek, Galerie
|
||||||
|
from seminar.models import Soustredeni
|
||||||
|
|
||||||
|
|
||||||
|
#def index(request, stitek=None):
|
||||||
|
#if stitek == None:
|
||||||
|
#return HttpResponseRedirect('./0/')
|
||||||
|
#
|
||||||
|
#galerie = Galerie.publikovane_galerie()
|
||||||
|
#if int(stitek) != 0:
|
||||||
|
#galerie = galerie.filter(stitek = stitek)
|
||||||
|
#if not galerie:
|
||||||
|
#raise Http404
|
||||||
|
#galerie = galerie.order_by("-datum_zmeny")
|
||||||
|
#
|
||||||
|
#return render(request, 'Galerie/GalerieIndex.html',
|
||||||
|
#{'galerie' : galerie,
|
||||||
|
#'stitky' : Stitek.stitky_u_galerii(),
|
||||||
|
#'umisteni_stitek' : stitek,
|
||||||
|
#'umisteni_Fotogalerie' : True,
|
||||||
|
#})
|
||||||
|
|
||||||
|
def nahled(request, pk, soustredeni):
|
||||||
|
"""Zobrazeni nahledu vsech fotek ve skupine."""
|
||||||
|
galerie = get_object_or_404(Galerie, pk=pk)
|
||||||
|
preview = False
|
||||||
|
if galerie.zobrazit >= 1:
|
||||||
|
if request.user.is_staff:
|
||||||
|
preview = True;
|
||||||
|
else:
|
||||||
|
raise Http404
|
||||||
|
return render(request, 'galerie/GalerieNahled.html',
|
||||||
|
{'galerie' : galerie,
|
||||||
|
'preview' : preview,
|
||||||
|
})
|
||||||
|
|
||||||
|
def detail(request, pk, fotka):
|
||||||
|
"""Zobrazeni nahledu fotky s id 'fotka'."""
|
||||||
|
MAX_VYSKA = 600
|
||||||
|
MAX_SIRKA = 600
|
||||||
|
MAX_VYSKA_MALA = 100
|
||||||
|
MAX_SIRKA_MALA = 200
|
||||||
|
NAHLEDU = 3
|
||||||
|
|
||||||
|
galerie = get_object_or_404(Galerie, pk=pk)
|
||||||
|
preview = False
|
||||||
|
if not galerie.je_publikovano():
|
||||||
|
if request.user.is_authenticated():
|
||||||
|
preview = True;
|
||||||
|
else:
|
||||||
|
raise Http404
|
||||||
|
obrazek = get_object_or_404(Obrazek, pk=fotka)
|
||||||
|
obrazky = galerie.obrazky.all()
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
obrazky_dalsi = obrazky[znacka+1:znacka+NAHLEDU+1]
|
||||||
|
if znacka > NAHLEDU:
|
||||||
|
obrazky_predchozi = obrazky[znacka-NAHLEDU:znacka]
|
||||||
|
else:
|
||||||
|
obrazky_predchozi = obrazky[0:znacka]
|
||||||
|
|
||||||
|
# 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,
|
||||||
|
'obrazek' : obrazek,
|
||||||
|
'vyska' : vyska,
|
||||||
|
'sirka' : sirka,
|
||||||
|
'obrazky_predchozi' : obrazky_predchozi,
|
||||||
|
'obrazky_dalsi' : obrazky_dalsi,
|
||||||
|
'preview' : preview,
|
||||||
|
'umisteni_Fotogalerie' : True,
|
||||||
|
})
|
||||||
|
|
Loading…
Reference in a new issue