použít i v produkčním template (typicky odevzdavatko/detail.html, čímž se vyřeší zalámání z !13)
(… a možná ještě něco dalšího)
Jednoduchý tag na generování `mailto:` odkazů.
Je potřeba ještě:
- [x] oddělit i tag `{% mailurl %}` (viz commit message)
- [x] ověřit, že odpovídá [RFC 6068](https://www.rfc-editor.org/rfc/rfc6068)
- [x] použít i v produkčním template (typicky `odevzdavatko/detail.html`, čímž se vyřeší zalámání z !13)
(… a možná ještě něco dalšího)
Vyrábí odkazy, které vedou na poslání mailu.
Psal jsem to spíš po paměti, nejsem si jistý, že to takhle je přesně
podle příslušného RFC, ale jako PoC dobrý a když to nebude fungovat, tak
se implementace opraví.
Všimněte si, že to je otestované, takže když někdo opraví testy
(=předpis chování), tak je pak snadné z diffu a všeho odvodit úpravu.
V Django dokumentaci se píše něco o tom, že by se měl použít spíš
`format_html` a `conditional_escape`, ale zatím jsem to víc nezkoumal.
Je žádoucí z tagu {% maillink %} odddělit i tag {% mailurl %}, který by
vracel samotnou URL. Obojí dává smysl umět (speciálně bastlení odkazů z
URL je stejně strašně nepřehledné, takže je lepší to zavřít do {%
maillink %} a nikdy nevidět), ale zatím to oddělené není… (Ale jsou na
to testy, takže by se mělo aspoň dát poznat, že rozdělení nerozbije
chování.)
Označení bylo zavádějící, protože se vůbec nejedná o objekt Hodnocení.
Neříkám, že nové jméno je nějak úchvatné, ale aspoň mě nemate a na
proměnnou s životností dva řádky je to stejně jedno…
Ten řádek má sice pořád 117 znaků, ale IMHO je to o dost lepší.
Mně to i správně vyplňuje subjecty v Thunderbirdu, takže můj kód asi
není úplně mimo :-)
{% for r in object.resitele.all %}{{ r }} (<ahref="mailto:{{ r.osoba.email }}?subject={{ "OpravařešeníM&M"|urlencode}}{{object.problem.all.0.hlavni_problem|urlencode}}">{{ r.osoba.email }}</a>){% if forloop.revcounter0 != 0 %}, {% endif %}{% endfor %}
Template IMHO spíš komentář nepotřebuje. Je to evidentně subject mailu, a věci se typicky berou v kontextu (a v development toolbaru by měl být normálně vidět). Ta divná věc je to, že ho bastlíme ve view…
Template IMHO spíš komentář nepotřebuje. Je to evidentně subject mailu, a věci se typicky berou v kontextu (a v development toolbaru by měl být normálně vidět). Ta divná věc je to, že ho bastlíme ve view…
Není to tohle:
from django.template.loader import render_to_string
https://docs.djangoproject.com/en/3.2/topics/templates/#django.template.loader.render_to_string
Neměl by se {% maillink %} chovat jako tag, aby mohl být obsah i uvnitř (i.e. {% maillink … %} text odkazu {% endmaillink %})? Neříkám, že to půjde snadno, ale možná by to bylo hezčí.
(Tohle bych na tom asi nezdržoval, navrhuju hodit do Kance s nízkou prioritou, protože hlavní účel to plní a dá se to kdyžtak obejít pomocí {% mailurl %}.)
Neměl by se `{% maillink %}` chovat jako tag, aby mohl být obsah i uvnitř (i.e. `{% maillink … %} text odkazu {% endmaillink %}`)? Neříkám, že to půjde snadno, ale možná by to bylo hezčí.
(Tohle bych na tom asi nezdržoval, navrhuju hodit do Kance s nízkou prioritou, protože hlavní účel to plní a dá se to kdyžtak obejít pomocí `{% mailurl %}`.)
Ad RFC 6068: syntaxe v základu odpovídá, nevím, jak moc správně kódujeme různé interpunkce. Tohle RFC neříká, které další parametry mají mailto adresy umět, ale základ splňujeme, zbytek kdyžtak někdo rozšíří v budoucnu…
Ad RFC 6068: syntaxe v základu odpovídá, nevím, jak moc správně kódujeme různé interpunkce. Tohle RFC neříká, které další parametry mají `mailto` adresy umět, ale základ splňujeme, zbytek kdyžtak někdo rozšíří v budoucnu…
ledoian
changed title from WIP: Tag pro odkazy na poslání mailu to Tag pro odkazy na poslání mailu2 years ago
Tak mě napadá, nechceme tam mít rovnou i mailto všem řešitelům toho problému?
Well, teď už je snadné si ho tam dopsat :-)
Za mě ale spíš ne, protože to vede k leakování adres napříč řešiteli a nemusíš chtít, aby někdo viděl tu adresu, kterou používáš pro M&M. (Disclaimer: píšu jako člověk, který bojuje se spoustou svých kamarádů, aby zapomněli konkrétní mé maily, protože neměly nikde být vidět.)
> Tak mě napadá, nechceme tam mít rovnou i mailto všem řešitelům toho problému?
Well, teď už je snadné si ho tam dopsat :-)
Za mě ale spíš ne, protože to vede k leakování adres napříč řešiteli a nemusíš chtít, aby někdo viděl tu adresu, kterou používáš pro M&M. (Disclaimer: píšu jako člověk, který bojuje se spoustou svých kamarádů, aby zapomněli konkrétní mé maily, protože neměly nikde být vidět.)
Tak mě napadá, nechceme tam mít rovnou i mailto všem řešitelům toho problému?
Well, teď už je snadné si ho tam dopsat :-)
Za mě ale spíš ne, protože to vede k leakování adres napříč řešiteli a nemusíš chtít, aby někdo viděl tu adresu, kterou používáš pro M&M. (Disclaimer: píšu jako člověk, který bojuje se spoustou svých kamarádů, aby zapomněli konkrétní mé maily, protože neměly nikde být vidět.)
Tak jako skrytou kopii. Protože jinak to orgové stejně udělají tak, že si všechny adresy nakopírují do „to:“.
To by mailto: mělo umět, ne?
> > Tak mě napadá, nechceme tam mít rovnou i mailto všem řešitelům toho problému?
>
> Well, teď už je snadné si ho tam dopsat :-)
>
> Za mě ale spíš ne, protože to vede k leakování adres napříč řešiteli a nemusíš chtít, aby někdo viděl tu adresu, kterou používáš pro M&M. (Disclaimer: píšu jako člověk, který bojuje se spoustou svých kamarádů, aby zapomněli konkrétní mé maily, protože neměly nikde být vidět.)
Tak jako skrytou kopii. Protože jinak to orgové stejně udělají tak, že si všechny adresy nakopírují do „to:“.
To by mailto: mělo umět, ne?
Tak jako skrytou kopii. Protože jinak to orgové stejně udělají tak, že si všechny adresy nakopírují do „to:“.
To by mailto: mělo umět, ne?
Podle toho RFC nikdo neví, co všechno má mailto umět, jen že musí umět subject a body… Zkusím.
> Tak jako skrytou kopii. Protože jinak to orgové stejně udělají tak, že si všechny adresy nakopírují do „to:“.
>
> To by mailto: mělo umět, ne?
Podle toho RFC nikdo neví, co všechno má mailto umět, jen že musí umět subject a body… Zkusím.
Jednoduchý tag na generování
mailto:
odkazů.Je potřeba ještě:
{% mailurl %}
(viz commit message)odevzdavatko/detail.html
, čímž se vyřeší zalámání z !13)(… a možná ještě něco dalšího)
{% for r in object.resitele.all %}{{ r }} (<a href="mailto:{{ r.osoba.email }}?subject={{ "Oprava řešení M&M " | urlencode }}{{ object.problem.all.0.hlavni_problem | urlencode }}">{{ r.osoba.email }}</a>){% if forloop.revcounter0 != 0 %}, {% endif %}{% endfor %}
{% for r in object.resitele.all %}
{{ r }}
({% maillink r.osoba.email to=r.osoba.email subject=mailsubject %}){% if forloop.revcounter0 != 0 %}, {% endif %}
Přemýšlím, jestli to nechce komentář, proč máme
mailsubject
generovaný ve view, když je to prakticky čistě prezentační záležitost… Názory?A možná v template komentář, kde se vzal mailsubject / co to je?
Template IMHO spíš komentář nepotřebuje. Je to evidentně subject mailu, a věci se typicky berou v kontextu (a v development toolbaru by měl být normálně vidět). Ta divná věc je to, že ho bastlíme ve view…
Ale možná by se mohl jmenovat česky, není důvod to tak neudělat (kromě toho, že jsem to nejspíš kódil v tramvaji a tam kódím většinou anglicky :-D)
def test_render_in_template(self):
# Pomocná funkce: vykreslí template do stringu
# Ref: https://stackoverflow.com/a/1690879
def render_template(template, context=None):
Není to tohle:
from django.template.loader import render_to_string
https://docs.djangoproject.com/en/3.2/topics/templates/#django.template.loader.render_to_string
Aha, to bere soubor…
Neměl by se
{% maillink %}
chovat jako tag, aby mohl být obsah i uvnitř (i.e.{% maillink … %} text odkazu {% endmaillink %}
)? Neříkám, že to půjde snadno, ale možná by to bylo hezčí.(Tohle bych na tom asi nezdržoval, navrhuju hodit do Kance s nízkou prioritou, protože hlavní účel to plní a dá se to kdyžtak obejít pomocí
{% mailurl %}
.)Ad RFC 6068: syntaxe v základu odpovídá, nevím, jak moc správně kódujeme různé interpunkce. Tohle RFC neříká, které další parametry mají
mailto
adresy umět, ale základ splňujeme, zbytek kdyžtak někdo rozšíří v budoucnu…WIP: Tag pro odkazy na poslání mailuto Tag pro odkazy na poslání mailu 2 years agoTak mě napadá, nechceme tam mít rovnou i mailto všem řešitelům toho problému?
Jinak OK
Well, teď už je snadné si ho tam dopsat :-)
Za mě ale spíš ne, protože to vede k leakování adres napříč řešiteli a nemusíš chtít, aby někdo viděl tu adresu, kterou používáš pro M&M. (Disclaimer: píšu jako člověk, který bojuje se spoustou svých kamarádů, aby zapomněli konkrétní mé maily, protože neměly nikde být vidět.)
Já to jdu asi mergenout. Vzhled to nerozbíjí, adresy taky ne :-)
Tak jako skrytou kopii. Protože jinak to orgové stejně udělají tak, že si všechny adresy nakopírují do „to:“.
To by mailto: mělo umět, ne?
Podle toho RFC nikdo neví, co všechno má mailto umět, jen že musí umět subject a body… Zkusím.
Well, ve Trojité to funguje, tak to prosím testni s čímkoliv co zrovna používáš. (Thunderbird evidentně divně interaguje s více spuštěnými firefoxy…)
Mně to (z Firefoxu do Thunderbirdu) funguje.
OK, merguji for real.
cac034149f
into master 2 years agocac034149f
.