diff --git a/galerie/TODO b/galerie/TODO index 0d3f5494..8a8b232f 100644 --- a/galerie/TODO +++ b/galerie/TODO @@ -5,4 +5,7 @@ * zvolit velikosti velke a male fotky * vycteni EXIFu * razeni podle casu -* uprava templatu +* uprava templatu (detail) +* hromadne nahravani fotek +* psani komentaru +* do CSS diff --git a/galerie/models.py b/galerie/models.py index e13d50b3..42dbaa50 100644 --- a/galerie/models.py +++ b/galerie/models.py @@ -30,7 +30,7 @@ class Obrazek(models.Model): 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) - 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') poradi = models.IntegerField('Pořadí', blank = True, null = True) def __unicode__(self): diff --git a/galerie/static/galerie/.gitignore b/galerie/static/galerie/.gitignore new file mode 100644 index 00000000..386e17f3 --- /dev/null +++ b/galerie/static/galerie/.gitignore @@ -0,0 +1,2 @@ +images +lightbox diff --git a/galerie/templates/galerie/GalerieNahled.html b/galerie/templates/galerie/GalerieNahled.html new file mode 100644 index 00000000..8a719c44 --- /dev/null +++ b/galerie/templates/galerie/GalerieNahled.html @@ -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 %} +

{{galerie.nazev}}

+ + {# podgalerie #} + {% if galerie.galerie_set.all or galerie.galerie_up %} +

PODGALERIE

+ + {% endif %} + + {# obrazky v galerii #} + {% if galerie.obrazek_set.all %} + + {% for obrazek in galerie.obrazek_set.all %} + {% if forloop.counter|add:-1|divisibleby:3 %} + + {% endif %} + + {% if forloop.last %} + {% if not forloop.counter|divisibleby:3 %} + + {% endif %} + {% if not forloop.counter|divisibleby:2 %} + + {% endif %} + {% endif %} + {% if forloop.counter|divisibleby:3 or forloop.last %} + + {% endif %} + {% endfor %} +
+ + + + +
+ {% else %} +
+ V galerii nejsou žádné fotky. +
+ {% endif %} +{% endblock content %} diff --git a/galerie/views.py b/galerie/views.py new file mode 100644 index 00000000..6ee5792f --- /dev/null +++ b/galerie/views.py @@ -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, + }) +