Vylepšení odevzdávátka #13

Merged
zelvuska merged 17 commits from vylepseni_odevzdavatka into master 2023-01-02 20:25:01 +01:00
Showing only changes of commit 98ac3f63bf - Show all commits

View file

@ -208,11 +208,8 @@ class ProfileEditForm(forms.Form):
prezdivka_resitele = self.cleaned_data.get('prezdivka_resitele')
if prezdivka_resitele == '':
return prezdivka_resitele
try:
Resitel.objects.get(prezdivka_resitele=prezdivka_resitele)
if Resitel.objects.filter(prezdivka_resitele=prezdivka_resitele).exclude(osoba__user__username=self.username).count() > 0:
raise forms.ValidationError('Přezdívka je již použita')
zelvuska marked this conversation as resolved Outdated

Tohle velmi zní, jako že ta přezdívka prostě nejde editovat vůbec – pokud už v databázi jsem, tak tohle matchne.

Tohle velmi zní, jako že ta přezdívka prostě nejde editovat vůbec – pokud už v databázi jsem, tak tohle matchne.

?

?

Pokud si Alice nastaví přezdívku „Axolotl“, tak ji má v databázi. Dotaz Restitel.objects.get(prezdivka=Axolotl) tedy tuto přezdívku najde a celý ResitelEditForm kvůli tomu nepůjde Alici odeslat, přestože je to její přezdívka.

Pokud si Alice nastaví přezdívku „Axolotl“, tak ji má v databázi. Dotaz `Restitel.objects.get(prezdivka=Axolotl)` tedy tuto přezdívku najde a celý `ResitelEditForm` kvůli tomu nepůjde Alici odeslat, přestože je to její přezdívka.

Promiň, tvůj komentář jsem pochopil jinak. Samozřejmě tohle je špatně… Dík

Promiň, tvůj komentář jsem pochopil jinak. Samozřejmě tohle je špatně… Dík

Ha, já nevím, podle čeho určit, který řešitel to edituje…

Ha, já nevím, podle čeho určit, který řešitel to edituje…

A nestačí to prostě uložit a zjistit, jestli to vyšlo? (Dost možná nestačí, nemám nastudovanou interakci formů a modelů, ale kdyby to stačilo, tak je to zdaleka nejjednodušší…)

A nestačí to prostě uložit a zjistit, jestli to vyšlo? (Dost možná nestačí, nemám nastudovanou interakci formů a modelů, ale kdyby to stačilo, tak je to zdaleka nejjednodušší…)

A poznáš, co selhalo? A přijde mi, že tohle by mělo být ještě v clean_…

A poznáš, co selhalo? A přijde mi, že tohle by mělo být ještě v clean_…

Vyřešeno. Ten objekt má při použití nastavený username…

Vyřešeno. Ten objekt má při použití nastavený username…
except ObjectDoesNotExist:
pass
return prezdivka_resitele
def clean_email(self):
zelvuska marked this conversation as resolved Outdated

Reálně se celý try-block snaží jen imitovat podmínku „pokud přezdívka není zabraná“ – je přehlednější to vyřešit spíš něčím jako if m.Resitel.objects.….count() > 0: raise Exception() (ne nutně na jednom řádku a s určitě s příslušnými třídami a doplněními).

Reálně se celý try-block snaží jen imitovat podmínku „pokud přezdívka není zabraná“ – je přehlednější to vyřešit spíš něčím jako `if m.Resitel.objects.….count() > 0: raise Exception()` (ne nutně na jednom řádku a s určitě s příslušnými třídami a doplněními).