fi-ksi / web-backend

Backend for KSI web written in Python.
MIT License
8 stars 3 forks source link

Pokus o znovuodevzdání programovací úlohy by měl načíst původní kód #85

Closed JanPokorny closed 6 years ago

JanPokorny commented 7 years ago

Pokud uživatel úspěšně odevzdá programovací úlohu, po kliknutí na "znovu odevzdat" se editační pole resetuje do původního stavu. Uživatel tak může přijít o svůj kód. Vzhledem k tomu, že se odevzdávání stejně ukládají, dávalo by smysl pole předvyplnit minule odevzdaným kódem.

horacekj commented 7 years ago

Byla o tom jednou diskuze a uzavřelo se to s tím, že to není potřeba. Navrhuji to dát jako option každého modulu do module.json.

JanPokorny commented 7 years ago

Resetovací tlačítko na původní kód tam stejně už je, takže nevidím důvod, proč by to nemělo být zapnuto jako default. Ale máš pravdu s tím, že to ve většině use-cases není potřeba.

effa commented 7 years ago

Osobně mi přijde neresetování kódu při odevzdání jako dobrý nápad a rozhodně jako očekávané chování. Takže než to dělat optional (podle nastavení module.json), tak jsem určitě za to, to už rovnou zapnout jako default.

horacekj commented 7 years ago

A má se načíst poslední odevzdaný kód když třeba otevřu úlohu po půl roce?

effa commented 7 years ago

To mi přijde celkem jedno. Nebo by to mohlo být matoucí? Pokud jo, tak bych tu hranici, kdy se ještě načte předchozí kód, nastavil klidně nízkou (třeba 1 den), protože ten zajímavý případ je podle mě ten, kdy to úspěšně odevzdám a chci ten svůj kód vidět hned vzápětí.

JanPokorny commented 7 years ago

Podle mě to matoucí nebude. Nedělal bych to složitější, a prostě načetl poslední funkční kód: zmáčknout "Reset" může uživatel vždycky.

vlstill commented 7 years ago

Podle mě to dává smysl aby se načetl odevzdaný kód, klidně i po půl roce, potenciální matení bych spíš řešil tím, že by se pod tím kódem mohl objevit řádek s něčím jako "byl načten poslední odevzdaný kód, pokud chcete začít řešit znovu, klikněte na "reset"".

horacekj commented 6 years ago

Implementováno na backendu. @BorysekOndrej Je potřeba to implementovat na frontend, velká většina je hotová, načítá to teď předchozí kód a dokonce po kliku na Obnovit výchozí kód je obnoven úplně původní kód. Navrhuji ještě zobrazit zprávu o tom, že byl načten kód z předchozího odevzdání/spouštění.

Nově odesílám při požadavku na endpoint taskDetails u modulu i:

Navrhuji tento postup: pokud ti dojde last_datetime, zobraz hlášku: Byl načten kód z odevzdání/spuštění ze 13. 1. 1922 17:09, pro obnovení původního kód stiskněte tlačítko Obnovit výchozí kód.

horacekj commented 6 years ago

(Zatím funguje jen na kyzikosu)

horacekj commented 6 years ago

Pozor na to, že čas je v UTC a je třeba provádět zobrazení dle nastavení prohlížeče (osvědčil se mi na to moment.js, který už v emberu je)

BorysekOndrej commented 6 years ago

Právě jsem to vložil do frontendu, jen mi z pohledu řešitele není jasné, čím se řídí, zda se kód uloží. Je to nyní pouze při úspěšném odevzdání? Pokud jo, vložil bych to pak do nápovědy.

horacekj commented 6 years ago

Nacita to posledni uspesne odevzdany kod, pokud takovy neni, tak posledni spusteni nebo odevzdani.