diff --git a/seminar/views.py b/seminar/views.py index b191b0c4..f38f5dc7 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -675,7 +675,6 @@ def texUploadView(request): # Řešení má nastavené číslo svojí úlohy, ale obrázky jsou # ukládány do čísla, kde řešení vyšlo c = meta["cislo_reseni"] - uloz_soubory(request.FILES.items(), meta["rocnik"], c) # Zjistíme typ ukládaného problému typy = { @@ -685,8 +684,8 @@ def texUploadView(request): } problem_typ = typy[meta["typ"]] - # Pokud už problém existuje, vytáhneme jej z db a upravíme + # Pokud neexistuje, vytvoříme jej jedině pokud je to vynucené # Pokud ročník/číslo ještě neexistuje, vyhodí to výjimku -> # číslo/ročník se musí založit ručně v adminu @@ -703,14 +702,22 @@ def texUploadView(request): problem = None if existujici: problem = existujici[0] - # Jinak vytvoříme nový - else: + elif "vytvor" in q: + # vytvoříme nový problem = Problem( typ=problem_typ, stav=Problem.STAV_ZADANY, kod=meta["kod"], cislo_zadani=cislo ) + else: + return JsonResponse({ + "error": "Problém neexistuje: {} {}.{} kód {}".format( + meta["typ"], meta["rocnik"], meta["cislo"], meta["kod"] + ) + }) + + uloz_soubory(request.FILES.items(), meta["rocnik"], c) if meta["typ"] == "reseni": problem.text_reseni = html @@ -750,6 +757,12 @@ def texDownloadView(request, rocnik, cislo): """View posílající JSON se zadanými a řešenými problémy pro založení čísla """ cislo = Cislo.objects.get(rocnik__rocnik=rocnik, cislo=cislo) + if cislo.faze == cislo.FAZE_NAHRANO: + # obsah byl nahrán z TeXu na web, už je příliš složitý + return JsonResponse( + {"error": "Obsah čísla už byl nahrán z TeXu na web."} + ) + zadane = Problem.objects.filter( cislo_zadani=cislo, stav=Problem.STAV_ZADANY @@ -786,6 +799,9 @@ def texDownloadView(request, rocnik, cislo): } for p in resene ], } + + cislo.faze = Cislo.FAZE_TEX + cislo.save() return JsonResponse(response)