Výroční sraz M&M #32

Merged
zelvuska merged 12 commits from vyroci into master 2023-06-15 16:57:27 +02:00
3 changed files with 44 additions and 2 deletions
Showing only changes of commit f3b0079651 - Show all commits

View file

@ -0,0 +1,31 @@
{% extends "base.html" %}
{% block content %}
<h1>{% block nadpis1a %}M&Mí 30! odpovědi{% endblock nadpis1a %}</h1>
<table class="dosla_reseni">
<tr>
<th>Jméno</th>
<th>Přezdívka</th>
<th>E-mail</th>
<th>Kdy účastník/org</th>
<th>Co znamená M&M?</th>
<th>Co znamená číslo?</th>
<th>Něco dodat?</th>
</tr>
{% for obj in ucastnikvyroci_list %}
zelvuska marked this conversation as resolved Outdated

Tohle funguje? Měl jsem za to, že ListView vyrábí v kontextu object_list… (A možná bych to malinko preferoval, kvůli konzistenci; byť by asi rozumné naopak bylo plošně všechny object_list přepsat na to, seznamy čeho to reálně jsou. Asi spíš výhledově, do Kanboardu…)

Jo, a když už jsme u toho, tak bych neobjektifikoval účastníky a tu iterační proměnou pojmenoval třeba u. Ale taky je to spíš taková poznámka, která by se spíš týkala nějaké dlouhodobější stránky, než téhle…

Tohle funguje? Měl jsem za to, že `ListView` vyrábí v kontextu `object_list`… (A možná bych to malinko preferoval, kvůli konzistenci; byť by asi rozumné naopak bylo plošně všechny `object_list` přepsat na to, seznamy čeho to reálně jsou. Asi spíš výhledově, do Kanboardu…) Jo, a když už jsme u toho, tak bych neobjektifikoval účastníky a tu iterační proměnou pojmenoval třeba `u`. Ale taky je to spíš taková poznámka, která by se spíš týkala nějaké dlouhodobější stránky, než téhle…
<tr>
<td style="word-break: break-all">{{ obj.jmeno }}</td>
<td style="word-break: break-all">{{ obj.prezdivka }}</td>
<td style="word-break: break-all">{{ obj.email }}</td>
<td style="word-break: break-all">{{ obj.kdy }}</td>
<td style="word-break: break-all">{{ obj.cojemam }}</td>
<td style="word-break: break-all">{{ obj.cislo }}</td>
<td style="word-break: break-all">{{ obj.dodat }}</td>
</tr>
{% endfor %}
</table>
{% endblock content %}

View file

@ -1,6 +1,7 @@
from django.urls import path from django.urls import path
from .views import VyrociView from seminar.utils import org_required
from .views import VyrociView, VyrociListView
urlpatterns = [ urlpatterns = [
path( path(
@ -8,4 +9,9 @@ urlpatterns = [
VyrociView.as_view(), VyrociView.as_view(),
name='vyrocni_sraz' name='vyrocni_sraz'
), ),
path(
'sraz_vysledky/',

Ale ne, to jsme se nepochopili… Měl jsem na mysli, že by celý sraz bydlel v nějaké hlubině, typu mam.mff.cuni.cz/sraz-30let/ a tam už by byly jednoduché cesty – adresa bez dalšího suffixu (tj. tady by byl záznam pro prázdný řetězec) by vedla na tu hlavní stránku a pak třeba mam.….cz/sraz-30let/ucastnici by vedlo na seznam přihlášených účastníků.

Ten hlavní point je, že si nezabiješ adresu mam.….cz/<něco užitečného> touhle jednorázovou věcí, protože pokud by se někdo někdy rozhodl, že chce stránky i pro účastnické srazy (mam.….cz/srazy/nebeska-rybna-2023), tak tam tohle bude překážet¹. (Vzhledem k tomu, jak to bastlíme, bych fakt nečekal, že se někdo bude snažit aplikaci vyroci zobecnit pro libovolné další použití)

Navíc možná může být žádoucí, aby stránka téhle akce existovala na stejné adrese ještě dalších 30 let, aby si to mohli orgové připomínat (zvlášť, pokud bychom tam někde měli nějaké další materiály z akce nebo něco podobného).

A taky mi přijde, že i seznam účastníků (IMO to fakt nejsou výsledky) sémanticky patří do „složky“ (stejného segmentu cesty) toho srazu, tedy že mají být někde pod tím, ne „vedle“.

Řetězec sraz-30let se může změnit, případně by asi šlo to vyloženě schovat do něčeho jako /srazy/org30let/, ale pozor na to, že tím by se opět zabetonovala cestová hierarchie (i.e. pokud se někdy někdo rozhodne, že pro případný účastnický sraz chce spíš adresu mam.….cz/sraz/nebeska-rybna-2023, tak pak vzniknou vedle sebe složky /sraz/ i /srazy/ a bude to mást orgy a webaře a nic s tím nepůjde (bez rozbití odkazů) udělat. Pokud první segment cesty bude něco hodně specifického (sraz-30let asi splňuje), tak je malá šance, že to s něčím bude kolidovat a tedy že může vzniknout potřeba to přesouvat.)

A zároveň tím, že to bude mít v hlavních urls.py vynucený vlastní prefix cesty, tak bude zřejmé, odkud se to bere, narozdíl od includu na prázdnou cestu, ke kterým je netriviální dohledat URLconf záznam (a tedy tranzitivně i view).

¹Jo, jsem si vědom toho, že můžeš pak napsat path('', include(…)) do aplikace pro výročí, ale to už je evidentní prasárna a nepůjde se v tom vyznat.

Ale ne, to jsme se nepochopili… Měl jsem na mysli, že by celý sraz bydlel v nějaké hlubině, typu `mam.mff.cuni.cz/sraz-30let/` a tam už by byly jednoduché cesty – adresa bez dalšího suffixu (tj. tady by byl záznam pro prázdný řetězec) by vedla na tu hlavní stránku a pak třeba `mam.….cz/sraz-30let/ucastnici` by vedlo na seznam přihlášených účastníků. Ten hlavní point je, že si nezabiješ adresu `mam.….cz/<něco užitečného>` touhle jednorázovou věcí, protože pokud by se někdo někdy rozhodl, že chce stránky i pro účastnické srazy (`mam.….cz/srazy/nebeska-rybna-2023`), tak tam tohle bude překážet¹. (Vzhledem k tomu, jak to bastlíme, bych fakt nečekal, že se někdo bude snažit aplikaci `vyroci` zobecnit pro libovolné další použití) Navíc možná může být žádoucí, aby stránka téhle akce existovala na stejné adrese ještě dalších 30 let, aby si to mohli orgové připomínat (zvlášť, pokud bychom tam někde měli nějaké další materiály z akce nebo něco podobného). A taky mi přijde, že i seznam účastníků (IMO to fakt nejsou výsledky) sémanticky patří do „složky“ (stejného segmentu cesty) toho srazu, tedy že mají být někde pod tím, ne „vedle“. Řetězec `sraz-30let` se může změnit, případně by asi šlo to vyloženě schovat do něčeho jako `/srazy/org30let/`, ale pozor na to, že tím by se opět zabetonovala cestová hierarchie (i.e. pokud se někdy někdo rozhodne, že pro případný účastnický sraz chce spíš adresu `mam.….cz/sraz/nebeska-rybna-2023`, tak pak vzniknou vedle sebe složky `/sraz/` i `/srazy/` a bude to mást orgy a webaře a nic s tím nepůjde (bez rozbití odkazů) udělat. Pokud první segment cesty bude něco hodně specifického (`sraz-30let` asi splňuje), tak je malá šance, že to s něčím bude kolidovat a tedy že může vzniknout potřeba to přesouvat.) A zároveň tím, že to bude mít v hlavních `urls.py` vynucený vlastní prefix cesty, tak bude zřejmé, odkud se to bere, narozdíl od includu na prázdnou cestu, ke kterým je netriviální dohledat URLconf záznam (a tedy tranzitivně i view). ¹Jo, jsem si vědom toho, že můžeš pak napsat `path('', include(…))` do aplikace pro výročí, ale to už je evidentní prasárna a nepůjde se v tom vyznat.

Možná napíšu patch, ono bude zřejmější, jak to myslím, v kódu a ne to tady rozepisovat (byť argumenty zůstanou tady…)

Možná napíšu patch, ono bude zřejmější, jak to myslím, v kódu a ne to tady rozepisovat (byť argumenty zůstanou tady…)

!33

!33
org_required(VyrociListView.as_view()),
name='vyrocni_sraz_vysledky'
),
] ]

View file

@ -1,4 +1,4 @@
from django.views.generic import FormView from django.views.generic import FormView, ListView
from seminar.models import Osoba from seminar.models import Osoba
from seminar.views import formularOKView from seminar.views import formularOKView
@ -29,3 +29,8 @@ class VyrociView(FormView):
initial["jmeno"] = osoba.plne_jmeno() initial["jmeno"] = osoba.plne_jmeno()
initial["email"] = osoba.email initial["email"] = osoba.email
return initial return initial
class VyrociListView(ListView):
template_name = 'vyroci/vyroci_list.html'
model = UcastnikVyroci