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
|
||||
* vycteni EXIFu
|
||||
* 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)
|
||||
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):
|
||||
|
|
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