Chytání chyb v hromadném přidání. Také přidány komentáře.
This commit is contained in:
		
							parent
							
								
									6dcd53b68f
								
							
						
					
					
						commit
						769a6d2dee
					
				
					 1 changed files with 21 additions and 4 deletions
				
			
		|  | @ -1,5 +1,6 @@ | |||
| from http import HTTPStatus | ||||
| 
 | ||||
| from django.core.exceptions import ValidationError | ||||
| from django.db import transaction | ||||
| from django.forms import Form, CharField, IntegerField | ||||
| from django.views.generic import FormView | ||||
|  | @ -21,28 +22,44 @@ def problemView(request, pk): | |||
| 
 | ||||
| 
 | ||||
| # FIXME Tohle možná patří do forms.py | ||||
| # FIXME Tohle není odladěné, selhává to nekontrolovaně | ||||
| #  a obecně je to fujky nekomentovaný kód | ||||
| # FIXME Chyby se ve formuláři zobrazují nějak divně | ||||
| class HromadnePridaniForm(Form): | ||||
| 	""" Formulář pro hromadné přidání úložek a problémů """ | ||||
| 
 | ||||
| 	tema = CharField(label="Název tématu:") | ||||
| 	dil = IntegerField(label="Díl:", min_value=1) | ||||
| 	body = CharField(label="Počty bodů (0 pro problém) oddělené čárkami:") | ||||
| 
 | ||||
| 	def clean_tema(self): | ||||
| 		""" Kontrola, že `tema` je název právě jednoho tématu """ | ||||
| 		if m.Tema.objects.filter( | ||||
| 				nazev__exact=self.cleaned_data['tema'], | ||||
| 				nadproblem=None).count() != 1: | ||||
| 			raise ValidationError("Špatný nebo nepřesně zadaný název témátka") | ||||
| 
 | ||||
| 	def clean_body(self): | ||||
| 		""" Kontrola, že `body` je seznam čísel """ | ||||
| 		try: | ||||
| 			list(map(int, self.cleaned_data["body"].split(","))) | ||||
| 		except ValueError: | ||||
| 			raise ValidationError("Špatný formát bodů") | ||||
| 
 | ||||
| 
 | ||||
| # FIXME Tohle není odladěné, selhává to nekontrolovaně | ||||
| #  a obecně je to fujky nekomentovaný kód | ||||
| class HromadnePridaniView(FormView): | ||||
| 	""" View pro hromadné přidání úložek a problémů """ | ||||
| 	form_class = HromadnePridaniForm | ||||
| 	template_name = "generic_form.html" | ||||
| 	success_url = 'hromadne_pridani' | ||||
| 
 | ||||
| 	def get_context_data(self, **kwargs): | ||||
| 		""" Přidání nadpisu stránky a url, kam se má poslat formulář. """ | ||||
| 		context = super().get_context_data() | ||||
| 		context["nadpis"] = "Hromadné přidání úloh" | ||||
| 		context["form_url"] = "hromadne_pridani" | ||||
| 		return context | ||||
| 
 | ||||
| 	def form_valid(self, form): | ||||
| 		""" Upravený Pavlův skript na hromadné přidání úložek a problémů. """ | ||||
| 		cd = form.cleaned_data | ||||
| 		tema = cd["tema"] | ||||
| 		dil = cd["dil"] | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue