Dopsán test, upraveny věci, aby běžel
This commit is contained in:
parent
1f499a00a1
commit
4a36ad5d57
3 changed files with 95 additions and 29 deletions
|
|
@ -3,14 +3,14 @@
|
|||
{% load bazmeky %}
|
||||
|
||||
{% block nadpis1a %}
|
||||
{{galerie.nazev}}: {{ obrazek.popisek | default:"Fotka" }}
|
||||
{{galerie.nazev}}: {{ soubor.popisek | default:"Fotka" }}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{# přecházení mezi fotkami pomocí šipek #}
|
||||
{% block script %}
|
||||
{% with obrazky_predchozi|last as predchozi_obrazek %}
|
||||
{% with obrazky_dalsi|first as dalsi_obrazek %}
|
||||
{% with soubory_predchozi|last as predchozi_soubor %}
|
||||
{% with soubory_dalsi|first as dalsi_soubor %}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$(document).keydown(function(e) {
|
||||
|
|
@ -18,16 +18,16 @@
|
|||
if ($(document.activeElement).parents("#komentarform").length > 0) {
|
||||
return;
|
||||
}
|
||||
{% if predchozi_obrazek %}
|
||||
{% if predchozi_soubor %}
|
||||
// doleva
|
||||
if (e.which == 37) {
|
||||
window.location.assign("{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=predchozi_obrazek.pk %}#nahoru");
|
||||
window.location.assign("{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=predchozi_soubor.pk %}#nahoru");
|
||||
}
|
||||
{% endif %}
|
||||
{% if dalsi_obrazek %}
|
||||
{% if dalsi_soubor %}
|
||||
// doprava
|
||||
if (e.which == 39) {
|
||||
window.location.assign("{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=dalsi_obrazek.pk %}#nahoru");
|
||||
window.location.assign("{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=dalsi_soubor.pk %}#nahoru");
|
||||
}
|
||||
{% endif %}
|
||||
if (e.which == 27) {
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
|
||||
{% block content %}
|
||||
|
||||
<div class="{% if obrazek.galerie.zobrazit == 1 %}mam-org-only{% endif %}{% if obrazek.galerie.zobrazit == 3 %}mam-resitel-only{% endif %}">
|
||||
<div class="{% if soubor.galerie.zobrazit == 1 %}mam-org-only{% endif %}{% if soubor.galerie.zobrazit == 3 %}mam-resitel-only{% endif %}">
|
||||
|
||||
<h2>
|
||||
{% for g in cesta %}
|
||||
|
|
@ -57,26 +57,26 @@
|
|||
|
||||
|
||||
<div class="galerie">
|
||||
{% if obrazky_predchozi %}
|
||||
{% with obrazky_predchozi|last as predchozi_obrazek %}
|
||||
{% if soubory_predchozi %}
|
||||
{% with soubory_predchozi|last as predchozi_soubor %}
|
||||
<div>
|
||||
<a title="Předchozí" class="predchozi_obrazek" href="{% url 'galeie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=predchozi_obrazek.pk %}#nahoru"></a>
|
||||
<a title="Předchozí" class="predchozi_obrazek" href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=predchozi_soubor.pk %}#nahoru"></a>
|
||||
</div>
|
||||
{% endwith %}
|
||||
{% endif%}
|
||||
<span id="nahoru" class="kotva_obrazku"></span>
|
||||
{% zobrazit obrazek.jako_bazmek alt=obrazek.popisek title=obrazek.popisek class="obrazek" %}
|
||||
{% zobrazit soubor.jako_bazmek alt=soubor.popisek title=soubor.popisek class="obrazek" %}
|
||||
|
||||
{% if obrazky_dalsi %}
|
||||
{% with obrazky_dalsi|first as dalsi_obrazek %}
|
||||
{% if soubory_dalsi %}
|
||||
{% with soubory_dalsi|first as dalsi_soubor %}
|
||||
<div>
|
||||
<a title="Další" class="dalsi_obrazek" href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=dalsi_obrazek.pk %}#nahoru"></a>
|
||||
<a title="Další" class="dalsi_obrazek" href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=dalsi_soubor.pk %}#nahoru"></a>
|
||||
</div>
|
||||
{% endwith %}
|
||||
{% endif%}
|
||||
</div>
|
||||
<!--<div>-->
|
||||
<!--<a href="{{ obrazek.soubor.url }}">Obrázek v plné velikosti</a>-->
|
||||
<!--<a href="{{ soubor.soubor.url }}">Obrázek v plné velikosti</a>-->
|
||||
<!--</div>-->
|
||||
|
||||
{# Popisek fotky #}
|
||||
|
|
@ -85,14 +85,14 @@
|
|||
<form action=".#nahoru" method="post" id="komentarform">
|
||||
{% csrf_token %}
|
||||
<table>
|
||||
<tr><td><label>Aktuální komentář:</label></td><td>{{obrazek.popisek}}</td>
|
||||
<tr><td><label>Aktuální komentář:</label></td><td>{{soubor.popisek}}</td>
|
||||
{{form.as_table}}
|
||||
<tr><td></td><td><input name="odeslat" type="submit" value="Změň komentář"></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
{% else %}
|
||||
{% if obrazek.popisek %}
|
||||
{{obrazek.popisek}}
|
||||
{% if soubor.popisek %}
|
||||
{{soubor.popisek}}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
|
@ -101,24 +101,24 @@
|
|||
{# odkaz na predchozi galerii #}
|
||||
<div class="navigace">
|
||||
{% if predchozi_galerie %}
|
||||
Předchozí: <a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=predchozi_galerie.pk soubor=predchozi_galerie.obrazek_set.last.pk %}#nahoru">
|
||||
Předchozí: <a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=predchozi_galerie.pk soubor=predchozi_galerie.soubor_set.last.pk %}#nahoru">
|
||||
{{predchozi_galerie}}
|
||||
</a>
|
||||
{% endif %}
|
||||
{# nahledy predchozich obrazku #}
|
||||
{% for obrazek in obrazky_predchozi %}
|
||||
<a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=obrazek.pk %}#nahoru">{% zmenseny_nahled obrazek.jako_bazmek height=100 %}</a>
|
||||
{# nahledy predchozich souboru #}
|
||||
{% for soubor in soubory_predchozi %}
|
||||
<a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=soubor.pk %}#nahoru">{% zmenseny_nahled soubor.jako_bazmek height=100 %}</a>
|
||||
{% endfor %}
|
||||
|
||||
{% zmenseny_nahled obrazek.jako_bazmek alt=obrazek.popisek class="obrazek" id="prostredni" %}
|
||||
{% zmenseny_nahled soubor.jako_bazmek alt=soubor.popisek class="obrazek" id="prostredni" %}
|
||||
|
||||
{# nahledy nasledujicich obrazku #}
|
||||
{% for obrazek in obrazky_dalsi %}
|
||||
<a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=obrazek.pk %}#nahoru">{% zmenseny_nahled obrazek.jako_bazmek height=100 %}</a>
|
||||
{# nahledy nasledujicich souboru #}
|
||||
{% for soubor in soubory_dalsi %}
|
||||
<a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=soubor.pk %}#nahoru">{% zmenseny_nahled soubor.jako_bazmek height=100 %}</a>
|
||||
{% endfor %}
|
||||
{# odkaz na nasledujici galerii #}
|
||||
{% if nasledujici_galerie %}
|
||||
Následující: <a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=nasledujici_galerie.pk soubor=nasledujici_galerie.obrazek_set.first.pk %}#nahoru">
|
||||
Následující: <a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=nasledujici_galerie.pk soubor=nasledujici_galerie.soubor_set.first.pk %}#nahoru">
|
||||
{{nasledujici_galerie}}
|
||||
</a>
|
||||
{% endif %}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
from django.conf import settings
|
||||
from django.contrib.admin.sites import AdminSite
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.http import HttpRequest
|
||||
from django.test import TestCase, Client, override_settings
|
||||
from django.urls import reverse
|
||||
from galerie.models import Galerie, Soubor
|
||||
|
|
@ -9,6 +11,8 @@ import django.contrib.auth.models as auth
|
|||
import personalni.models as pers
|
||||
import tvorba.models as tv
|
||||
|
||||
import galerie.admin as g_adm
|
||||
|
||||
from contextlib import ExitStack
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
|
|
@ -138,3 +142,64 @@ class GalerieTests(TestCase):
|
|||
self.assertEqual(pa_gal.poradi, 1)
|
||||
self.assertEqual(so_gal.poradi, 2)
|
||||
|
||||
# Ověříme, že v galeriích jsou obrázky
|
||||
self.assertEqual(top_gal.soubor_set.count(), 0) # FIXME: related_name
|
||||
self.assertEqual(top_gal.podgalerie.count(), 2)
|
||||
self.assertEqual(pa_gal.podgalerie.count(), 0)
|
||||
self.assertEqual(pa_gal.soubor_set.count(), 3)
|
||||
self.assertEqual(so_gal.podgalerie.count(), 0)
|
||||
self.assertEqual(so_gal.soubor_set.count(), 1)
|
||||
|
||||
# Zveřejníme galerii (už ne pomocí org_clienta, bo se to dělá v Adminu, ale tu admin action použít chceme umět)
|
||||
# Otestujeme práva, že ještě veřejná není
|
||||
self.assertEqual(top_gal.zobrazit, Galerie.Viditelnost.ORG)
|
||||
self.assertEqual(pa_gal.zobrazit, Galerie.Viditelnost.ORG)
|
||||
self.assertEqual(so_gal.zobrazit, Galerie.Viditelnost.ORG)
|
||||
# (použití Admina zkopírováno z personalni.tests, což odkazuje na https://www.argpar.se/posts/programming/testing-django-admin/
|
||||
adm_site = AdminSite()
|
||||
galerieadmin = g_adm.GalerieAdmin(Galerie, adm_site)
|
||||
# Sobotní galerie budiž jen pro účastníky
|
||||
so_gal.zobrazit = Galerie.Viditelnost.UCASTNIK
|
||||
so_gal.save()
|
||||
# FIXME: queryset z literálu
|
||||
g_adm.zverejnit_fotogalerii(galerieadmin, HttpRequest(), Galerie.objects.filter(pk=top_gal.pk))
|
||||
|
||||
top_gal.refresh_from_db()
|
||||
pa_gal.refresh_from_db()
|
||||
so_gal.refresh_from_db()
|
||||
|
||||
# Otestujeme práva
|
||||
self.assertEqual(top_gal.zobrazit, Galerie.Viditelnost.VZDY)
|
||||
self.assertEqual(pa_gal.zobrazit, Galerie.Viditelnost.VZDY)
|
||||
self.assertEqual(so_gal.zobrazit, Galerie.Viditelnost.UCASTNIK)
|
||||
# otestujeme i že jde dělat requesty
|
||||
url_top = reverse('galerie_galerie', kwargs={'soustredeni': self.sous_a.id, 'galerie': top_gal.pk})
|
||||
url_pa = reverse('galerie_galerie', kwargs={'soustredeni': self.sous_a.id, 'galerie': pa_gal.pk})
|
||||
url_so = reverse('galerie_galerie', kwargs={'soustredeni': self.sous_a.id, 'galerie': so_gal.pk})
|
||||
url_pa_soub = [reverse('galerie_soubor', kwargs={'soustredeni': self.sous_a.id, 'galerie': pa_gal.pk, 'soubor': s.pk}) for s in pa_gal.soubor_set.all()]
|
||||
url_so_soub = [reverse('galerie_soubor', kwargs={'soustredeni': self.sous_a.id, 'galerie': so_gal.pk, 'soubor': s.pk}) for s in so_gal.soubor_set.all()]
|
||||
verejne_url = [url_top, url_pa] + url_pa_soub
|
||||
ucastnik_url = [url_so] + url_so_soub
|
||||
# TODO: mít org-only galerii?
|
||||
uc_client = Client()
|
||||
uc_client.force_login(self.ucastnik_a.osoba.user)
|
||||
ucb_client = Client()
|
||||
ucb_client.force_login(self.ucastnik_b.osoba.user)
|
||||
neuc_client = Client()
|
||||
neuc_client.force_login(self.neucastnik.osoba.user)
|
||||
verej_client = Client()
|
||||
|
||||
for url in ucastnik_url:
|
||||
for cl, status in (
|
||||
(org_client, 200),
|
||||
(uc_client, 200),
|
||||
(ucb_client, 404),
|
||||
(neuc_client, 404),
|
||||
(verej_client, 404),
|
||||
):
|
||||
resp = cl.get(url)
|
||||
self.assertEqual(resp.status_code, status)
|
||||
for url in verejne_url:
|
||||
for cl in (org_client, uc_client, ucb_client, neuc_client, verej_client):
|
||||
resp = cl.get(url)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ def souborView(request, soustredeni: int, galerie: int, soubor: int):
|
|||
# obrázků v jedné galerii, tak je to asi jedno :-D
|
||||
index_souboru = soubory.index(soubor)
|
||||
# Podle mě se nemůže stát, že by volání výš selhalo, kdyžtak shodí web. (původně to byl explicitně ošetřený stav dávající 404)
|
||||
predchozi_soubory = list(reversed(soubor[:index_souboru]))
|
||||
predchozi_soubory = list(reversed(soubory[:index_souboru]))
|
||||
nasledujici_soubory = soubory[index_souboru+1:]
|
||||
# Může jich být hodně…
|
||||
predchozi_soubory = predchozi_soubory[:NAHLEDU]
|
||||
|
|
@ -158,6 +158,7 @@ def souborView(request, soustredeni: int, galerie: int, soubor: int):
|
|||
'upravy_popisku' : dovolit_upravy_popisku(galerie, request),
|
||||
'form' : form,
|
||||
'cesta': cesta_od_korene(galerie),
|
||||
'soustredeni': soustredeni,
|
||||
'object': soubor,
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue