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 %}
|
{% load bazmeky %}
|
||||||
|
|
||||||
{% block nadpis1a %}
|
{% block nadpis1a %}
|
||||||
{{galerie.nazev}}: {{ obrazek.popisek | default:"Fotka" }}
|
{{galerie.nazev}}: {{ soubor.popisek | default:"Fotka" }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
{# přecházení mezi fotkami pomocí šipek #}
|
{# přecházení mezi fotkami pomocí šipek #}
|
||||||
{% block script %}
|
{% block script %}
|
||||||
{% with obrazky_predchozi|last as predchozi_obrazek %}
|
{% with soubory_predchozi|last as predchozi_soubor %}
|
||||||
{% with obrazky_dalsi|first as dalsi_obrazek %}
|
{% with soubory_dalsi|first as dalsi_soubor %}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$(document).keydown(function(e) {
|
$(document).keydown(function(e) {
|
||||||
|
|
@ -18,16 +18,16 @@
|
||||||
if ($(document.activeElement).parents("#komentarform").length > 0) {
|
if ($(document.activeElement).parents("#komentarform").length > 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
{% if predchozi_obrazek %}
|
{% if predchozi_soubor %}
|
||||||
// doleva
|
// doleva
|
||||||
if (e.which == 37) {
|
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 %}
|
{% endif %}
|
||||||
{% if dalsi_obrazek %}
|
{% if dalsi_soubor %}
|
||||||
// doprava
|
// doprava
|
||||||
if (e.which == 39) {
|
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 %}
|
{% endif %}
|
||||||
if (e.which == 27) {
|
if (e.which == 27) {
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
|
|
||||||
{% block content %}
|
{% 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>
|
<h2>
|
||||||
{% for g in cesta %}
|
{% for g in cesta %}
|
||||||
|
|
@ -57,26 +57,26 @@
|
||||||
|
|
||||||
|
|
||||||
<div class="galerie">
|
<div class="galerie">
|
||||||
{% if obrazky_predchozi %}
|
{% if soubory_predchozi %}
|
||||||
{% with obrazky_predchozi|last as predchozi_obrazek %}
|
{% with soubory_predchozi|last as predchozi_soubor %}
|
||||||
<div>
|
<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>
|
</div>
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{% endif%}
|
{% endif%}
|
||||||
<span id="nahoru" class="kotva_obrazku"></span>
|
<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 %}
|
{% if soubory_dalsi %}
|
||||||
{% with obrazky_dalsi|first as dalsi_obrazek %}
|
{% with soubory_dalsi|first as dalsi_soubor %}
|
||||||
<div>
|
<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>
|
</div>
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{% endif%}
|
{% endif%}
|
||||||
</div>
|
</div>
|
||||||
<!--<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>-->
|
<!--</div>-->
|
||||||
|
|
||||||
{# Popisek fotky #}
|
{# Popisek fotky #}
|
||||||
|
|
@ -85,14 +85,14 @@
|
||||||
<form action=".#nahoru" method="post" id="komentarform">
|
<form action=".#nahoru" method="post" id="komentarform">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<table>
|
<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}}
|
{{form.as_table}}
|
||||||
<tr><td></td><td><input name="odeslat" type="submit" value="Změň komentář"></td></tr>
|
<tr><td></td><td><input name="odeslat" type="submit" value="Změň komentář"></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if obrazek.popisek %}
|
{% if soubor.popisek %}
|
||||||
{{obrazek.popisek}}
|
{{soubor.popisek}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -101,24 +101,24 @@
|
||||||
{# odkaz na predchozi galerii #}
|
{# odkaz na predchozi galerii #}
|
||||||
<div class="navigace">
|
<div class="navigace">
|
||||||
{% if predchozi_galerie %}
|
{% 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}}
|
{{predchozi_galerie}}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{# nahledy predchozich obrazku #}
|
{# nahledy predchozich souboru #}
|
||||||
{% for obrazek in obrazky_predchozi %}
|
{% for soubor in soubory_predchozi %}
|
||||||
<a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=obrazek.pk %}#nahoru">{% zmenseny_nahled obrazek.jako_bazmek height=100 %}</a>
|
<a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=soubor.pk %}#nahoru">{% zmenseny_nahled soubor.jako_bazmek height=100 %}</a>
|
||||||
{% endfor %}
|
{% 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 #}
|
{# nahledy nasledujicich souboru #}
|
||||||
{% for obrazek in obrazky_dalsi %}
|
{% for soubor in soubory_dalsi %}
|
||||||
<a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=obrazek.pk %}#nahoru">{% zmenseny_nahled obrazek.jako_bazmek height=100 %}</a>
|
<a href="{% url 'galerie_soubor' soustredeni=soustredeni.id galerie=galerie.pk soubor=soubor.pk %}#nahoru">{% zmenseny_nahled soubor.jako_bazmek height=100 %}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{# odkaz na nasledujici galerii #}
|
{# odkaz na nasledujici galerii #}
|
||||||
{% if nasledujici_galerie %}
|
{% 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}}
|
{{nasledujici_galerie}}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.contrib.admin.sites import AdminSite
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
from django.http import HttpRequest
|
||||||
from django.test import TestCase, Client, override_settings
|
from django.test import TestCase, Client, override_settings
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from galerie.models import Galerie, Soubor
|
from galerie.models import Galerie, Soubor
|
||||||
|
|
@ -9,6 +11,8 @@ import django.contrib.auth.models as auth
|
||||||
import personalni.models as pers
|
import personalni.models as pers
|
||||||
import tvorba.models as tv
|
import tvorba.models as tv
|
||||||
|
|
||||||
|
import galerie.admin as g_adm
|
||||||
|
|
||||||
from contextlib import ExitStack
|
from contextlib import ExitStack
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import shutil
|
import shutil
|
||||||
|
|
@ -138,3 +142,64 @@ class GalerieTests(TestCase):
|
||||||
self.assertEqual(pa_gal.poradi, 1)
|
self.assertEqual(pa_gal.poradi, 1)
|
||||||
self.assertEqual(so_gal.poradi, 2)
|
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
|
# obrázků v jedné galerii, tak je to asi jedno :-D
|
||||||
index_souboru = soubory.index(soubor)
|
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)
|
# 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:]
|
nasledujici_soubory = soubory[index_souboru+1:]
|
||||||
# Může jich být hodně…
|
# Může jich být hodně…
|
||||||
predchozi_soubory = predchozi_soubory[:NAHLEDU]
|
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),
|
'upravy_popisku' : dovolit_upravy_popisku(galerie, request),
|
||||||
'form' : form,
|
'form' : form,
|
||||||
'cesta': cesta_od_korene(galerie),
|
'cesta': cesta_od_korene(galerie),
|
||||||
|
'soustredeni': soustredeni,
|
||||||
'object': soubor,
|
'object': soubor,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue