odevzdavatko: odesílání emailu řešiteli při změně zpětné vazby #83

Merged
zelvuska merged 4 commits from notifikace-zpetne-vazby into master 2025-01-21 18:10:49 +01:00
Owner

Toto se rozbíjí, když dojde ke smazání hodnocení v pořadí dříve, než
nějaké hodnocení s neprázdnou zpětnou vazbou, neboť řádky formsetu jsou
přečíslovány a pak špatně spárovány s původními hodnotami, takže se
nesprávně detekuje změna.

Toto se rozbíjí, když dojde ke smazání hodnocení v pořadí dříve, než nějaké hodnocení s neprázdnou zpětnou vazbou, neboť řádky formsetu jsou přečíslovány a pak špatně spárovány s původními hodnotami, takže se nesprávně detekuje změna.
karelb added 1 commit 2024-12-03 21:38:26 +01:00
Toto se rozbíjí, když dojde ke smazání hodnocení v pořadí dříve, než
nějaké hodnocení s neprázdnou zpětnou vazbou, neboť řádky formsetu jsou
přečíslovány a pak špatně spárovány s původními hodnotami, takže se
nesprávně detekuje změna.
Owner

Zkoušel jsem na testwebu. Vypadá velmi dobře1. Jdu číst kód.


  1. Jediná chyba, kterou jsem zatím objevil, je, že když org smaže poslední hodnocení k danému řešení (což není normální postup, ale stále to umožňujeme), pak URL adresa vede na stránku, která vyhazuje chybu. (Což samozřejmě není chyba tohoto pullrequestu, ale ale možná by to chtělo vyřešit, než ho mergeneme.) ↩︎

Zkoušel jsem na testwebu. Vypadá velmi dobře[^1]. Jdu číst kód. [^1]: Jediná chyba, kterou jsem zatím objevil, je, že když org smaže poslední hodnocení k danému řešení (což není normální postup, ale stále to umožňujeme), pak URL adresa vede na stránku, která vyhazuje chybu. (Což samozřejmě není chyba tohoto pullrequestu, ale ale možná by to chtělo vyřešit, než ho mergeneme.)
Owner

Jo, napadá mě, co když org nepíše žádnou zpětnou vazbu, ale pouze dává body. (Pak to řešiteli nepošle žádný e-mail. Obdobně, když org nejprve přidá zpětnou vazbu a o několik dní později teprve nasází body.)

Asi bych to tak nechal…

Jo, napadá mě, co když org nepíše žádnou zpětnou vazbu, ale pouze dává body. (Pak to řešiteli nepošle žádný e-mail. Obdobně, když org nejprve přidá zpětnou vazbu a o několik dní později teprve nasází body.) Asi bych to tak nechal…
Owner

Za mě OK :)

Za mě OK :)
ledoian reviewed 2025-01-14 19:40:07 +01:00
@ -0,0 +13,4 @@
migrations.AddField(
model_name='resitel',
name='upozorneni',
field=models.BooleanField(default=True, verbose_name='zasílat upozornění na změnu zpětné vazby k řešení emailem'),
Owner

Za mě spíš default=False, je to změna chování webu a těch mailů potenciálně může být docela hodně… Ale je to asi otázka spíš mého osobního názoru (věci nemají random měnit chování a vývojáři nemají diktovat uživatelům, co chtějí) než něčeho striktního, klidně mě přehlasujte…

Za mě spíš `default=False`, je to změna chování webu a těch mailů potenciálně může být docela hodně… Ale je to asi otázka spíš mého osobního názoru (věci nemají random měnit chování a vývojáři nemají diktovat uživatelům, co chtějí) než něčeho striktního, klidně mě přehlasujte…
Owner

Za mě default=True.

Klidně tím způsobem, že v migraci je všechny nastavíme na False a s příštím číslem (a na discordu a v novince) pošleme informaci.

Za mě `default=True`. Klidně tím způsobem, že v migraci je všechny nastavíme na False a s příštím číslem (a na discordu a v novince) pošleme informaci.
Owner

Však taky komentuji jen migraci a ne formulář – myslím, že máme na mysli to samé :-)

Však taky komentuji jen migraci a ne formulář – myslím, že máme na mysli to samé :-)
Author
Owner

Klidně tím způsobem, že v migraci je všechny nastavíme na False a s příštím číslem (a na discordu a v novince) pošleme informaci.

Jakože by to bylo True pro nové řešitele ale pro již existující False?

> Klidně tím způsobem, že v migraci je všechny nastavíme na False a s příštím číslem (a na discordu a v novince) pošleme informaci. Jakože by to bylo `True` pro nové řešitele ale pro již existující `False`?
Owner

Přesně tak :)

Ale podle mě to nejde udělat tím, že v migraci napíš default=False (to dle mého změní default tabulky, tedy django pořád bude chtít vyrobit další migraci), nebo ne?

Je pravda, že pak můžu vyrobit druhou migraci, kterou se to vyřeší…

Přesně tak :) Ale podle mě to nejde udělat tím, že v migraci napíš `default=False` (to dle mého změní default tabulky, tedy django pořád bude chtít vyrobit další migraci), nebo ne? Je pravda, že pak můžu vyrobit druhou migraci, kterou se to vyřeší…
Owner

Tak do tabulky se tak jak tak uloží ten boolean, který přijde ve formuláři, tedy pokud má formulář initial=True (což iirc má), tak se tady default použije jen pro stávající řádky tabulky v rámci migrace (a ano, možná tam někde bude poznamenaný, ale nikdy se nepoužije…).

Tak do tabulky se tak jak tak uloží ten boolean, který přijde ve formuláři, tedy pokud má formulář `initial=True` (což iirc má), tak se tady `default` použije jen pro stávající řádky tabulky v rámci migrace (a ano, možná tam někde bude poznamenaný, ale nikdy se nepoužije…).
Owner

Pokud chceme být hodně explicitní, tak můžeme nastavit default=True a pak napsat něco typu Resitel.objects.update(notifikace_o_zpetne_vazbe=False), ale to mi přijde zbytečně překomplikované…

Pokud chceme být hodně explicitní, tak můžeme nastavit `default=True` a pak napsat něco typu `Resitel.objects.update(notifikace_o_zpetne_vazbe=False)`, ale to mi přijde zbytečně překomplikované…
Owner

A můj přístup by byl z models.py default zrušit úplně a naopak nastavit null=False. To vynutí, že ta tabulka bude vždycky chtít explicitní nastavení při přidání řádku a default v migraci se použije jen pro tu migraci… (Speciálně: teď nevím, jestli staré řádky náhodou v DB nebudou mít NULL místo False, ale čekám, že se ten default spíš projeví.)

A můj přístup by byl z `models.py` `default` zrušit úplně a naopak nastavit `null=False`. To vynutí, že ta tabulka bude vždycky chtít explicitní nastavení při přidání řádku a `default` v migraci se použije jen pro tu migraci… (Speciálně: teď nevím, jestli staré řádky náhodou v DB nebudou mít NULL místo False, ale čekám, že se ten default spíš projeví.)
Author
Owner

Zvolil jsem variantu s default=True a změnou existujících řádků v rámci migrace právě proto, že mi přijde nejvíce explicitní.

Zvolil jsem variantu s `default=True` a změnou existujících řádků v rámci migrace právě proto, že mi přijde nejvíce explicitní.
Owner

Mně se to líbí. LEdo?

Mně se to líbí. LEdo?
Owner

LEdo lgtm…

LEdo lgtm…
karelb marked this conversation as resolved
ledoian reviewed 2025-01-14 19:41:05 +01:00
@ -250,6 +250,8 @@ class Resitel(SeminarModelBase):
poznamka = models.TextField('neveřejná poznámka', blank=True,
help_text='Neveřejná poznámka k řešiteli (plain text)')
upozorneni = models.BooleanField('zasílat upozornění na změnu zpětné vazby k řešení emailem', default=True)
Owner

Ideálně asi pojmenovat jinak, tohle potenciálně není jediné upozornění, které chceme posílat. Navrhuji upozornovat_na_opravy_reseni

Ideálně asi pojmenovat jinak, tohle potenciálně není jediné upozornění, které chceme posílat. Navrhuji `upozornovat_na_opravy_reseni`
karelb marked this conversation as resolved
Owner

Až na ty dvě drobnosti za mě taky OK.

Až na ty dvě drobnosti za mě taky OK.
Owner

A ještě jeden komentář, spíš do budoucna: Asi budeme někdy chtít mít vyloženě nějaká uživatelská nastavení (posílání notifikací, výchozí filtr v odevzdávátkové tabulce, typ frontendu korekturovátka, atp.) a tohle je asi jedna z věcí, které by tam mohly přijít. Ale asi teď neřešme, kde a jak tohle má být kam navázané…

A ještě jeden komentář, spíš do budoucna: Asi budeme někdy chtít mít vyloženě nějaká uživatelská nastavení (posílání notifikací, výchozí filtr v odevzdávátkové tabulce, typ frontendu korekturovátka, atp.) a tohle je asi jedna z věcí, které by tam mohly přijít. Ale asi teď neřešme, kde a jak tohle má být kam navázané…
karelb added 1 commit 2025-01-14 21:03:48 +01:00
karelb added 1 commit 2025-01-15 18:58:23 +01:00
Author
Owner

Pokud to takto vyhovuje a nemáte již jiné připomínky, mohu udělat rebase a při něm squash.

Pokud to takto vyhovuje a nemáte již jiné připomínky, mohu udělat rebase a při něm squash.
Owner

Pokud to takto vyhovuje a nemáte již jiné připomínky, mohu udělat rebase a při něm squash.

To rozhodně není potřeba (na hezký git si tu rozhodně nehrajeme :) )

> Pokud to takto vyhovuje a nemáte již jiné připomínky, mohu udělat rebase a při něm squash. To rozhodně není potřeba (na hezký git si tu rozhodně nehrajeme :) )
zelvuska added 1 commit 2025-01-21 18:05:13 +01:00
zelvuska merged commit 833893f233 into master 2025-01-21 18:10:49 +01:00
zelvuska deleted branch notifikace-zpetne-vazby 2025-01-21 18:10:50 +01:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
3 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#83
No description provided.