Browse Source

galerie | clone view, template + uprava pro M&M

remotes/origin/Float_novinky
Bc. Petr Pecha 9 years ago
parent
commit
626e4f21a5
  1. 5
      galerie/TODO
  2. 2
      galerie/models.py
  3. 2
      galerie/static/galerie/.gitignore
  4. 72
      galerie/templates/galerie/GalerieNahled.html
  5. 98
      galerie/views.py

5
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

2
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):

2
galerie/static/galerie/.gitignore

@ -0,0 +1,2 @@
images
lightbox

72
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 %}
<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

@ -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…
Cancel
Save