Tag pro odkazy na poslání mailu #22

Merged
ledoian merged 7 commits from maillink into master 2023-02-06 22:02:00 +01:00
Owner

Jednoduchý tag na generování mailto: odkazů.

Je potřeba ještě:

  • oddělit i tag {% mailurl %} (viz commit message)
  • ověřit, že odpovídá RFC 6068
  • 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)
ledoian added 1 commit 2023-01-05 04:52:06 +01:00
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í.)
ledoian added 2 commits 2023-01-08 08:58:55 +01:00
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 :-)
ledoian reviewed 2023-01-08 18:10:26 +01:00
@ -17,1 +18,3 @@
{% 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 %}
Author
Owner

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?

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?
Owner

A možná v template komentář, kde se vzal mailsubject / co to je?

A možná v template komentář, kde se vzal mailsubject / co to je?
Author
Owner

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…
Author
Owner

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)

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)
zelvuska marked this conversation as resolved
zelvuska reviewed 2023-02-06 19:45:48 +01:00
zelvuska reviewed 2023-02-06 19:46:16 +01:00
various/tests.py Outdated
@ -4,0 +27,4 @@
def test_render_in_template(self):
# Pomocná funkce: vykreslí template do stringu
# Ref: https://stackoverflow.com/a/1690879
def render_template(template, context=None):
Owner

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

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
Owner

Aha, to bere soubor…

Aha, to bere soubor…
zelvuska marked this conversation as resolved
ledoian added 1 commit 2023-02-06 20:15:07 +01:00
Author
Owner

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 %}`.)
ledoian added 2 commits 2023-02-06 20:27:49 +01:00
Author
Owner

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í mailu 2023-02-06 20:32:06 +01:00
Owner

Tak mě napadá, nechceme tam mít rovnou i mailto všem řešitelům toho problému?

Tak mě napadá, nechceme tam mít rovnou i mailto všem řešitelům toho problému?
Owner

Jinak OK

Jinak OK
Author
Owner

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.)
Author
Owner

Já to jdu asi mergenout. Vzhled to nerozbíjí, adresy taky ne :-)

Já to jdu asi mergenout. Vzhled to nerozbíjí, adresy taky ne :-)
Owner

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?
Author
Owner

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.
ledoian added 1 commit 2023-02-06 21:56:41 +01:00
Author
Owner

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…)

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…)
Owner

Mně to (z Firefoxu do Thunderbirdu) funguje.

Mně to (z Firefoxu do Thunderbirdu) funguje.
Author
Owner

OK, merguji for real.

OK, merguji for real.
ledoian merged commit cac034149f into master 2023-02-06 22:02:00 +01:00
ledoian deleted branch maillink 2023-02-06 22:02:00 +01:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: mam/mamweb#22
No description provided.