Upravitelná poznámka
This commit is contained in:
		
							parent
							
								
									b1eb8bf1fd
								
							
						
					
					
						commit
						69c0bce38a
					
				
					 3 changed files with 16 additions and 7 deletions
				
			
		|  | @ -316,6 +316,11 @@ OhodnoceniReseniFormSet = formset_factory(JednoHodnoceniForm, | |||
| 		extra = 0, | ||||
| 		) | ||||
| 
 | ||||
| class PoznamkaReseniForm(forms.ModelForm): | ||||
| 	class Meta: | ||||
| 		model = m.Reseni | ||||
| 		fields = ('poznamka',) | ||||
| 
 | ||||
| # FIXME: Ideálně by mělo být součástí třídy níž, ale neumím to udělat | ||||
| DATE_FORMAT = '%Y-%m-%d' | ||||
| 
 | ||||
|  |  | |||
|  | @ -85,15 +85,14 @@ $(document).ready(function(){ | |||
| <p>Žádné přílohy</p> | ||||
| {% endif %} | ||||
| 
 | ||||
| <form method=post> | ||||
| {# Poznámka #} | ||||
| {% if object.poznamka %} | ||||
| <h3>Poznámka:</h3> | ||||
| {{ object.poznamka }} | ||||
| {% endif %} | ||||
| <p>{{ poznamka_form.poznamka }}</p> | ||||
| 
 | ||||
| {# Hodnocení: #} | ||||
| <h3>Hodnocení:</h3> | ||||
| <form method=post><table> | ||||
| <table> | ||||
| {% csrf_token %} | ||||
| {{ form.management_form }} | ||||
| </table> | ||||
|  |  | |||
|  | @ -206,9 +206,9 @@ class DetailReseniView(DetailView): | |||
| 	template_name = 'seminar/odevzdavatko/detail.html' | ||||
| 	 | ||||
| 	def aktualni_hodnoceni(self): | ||||
| 		reseni = get_object_or_404(m.Reseni, id=self.kwargs['pk']) | ||||
| 		self.reseni = get_object_or_404(m.Reseni, id=self.kwargs['pk']) | ||||
| 		result = [] # Slovníky s klíči problem, body, cislo_body -- initial data pro f.OhodnoceniReseniFormSet | ||||
| 		for hodn in m.Hodnoceni.objects.filter(reseni=reseni): | ||||
| 		for hodn in m.Hodnoceni.objects.filter(reseni=self.reseni): | ||||
| 			result.append( | ||||
| 				{"problem": hodn.problem,  | ||||
| 				"body": hodn.body, | ||||
|  | @ -221,6 +221,7 @@ class DetailReseniView(DetailView): | |||
| 		ctx['form'] = f.OhodnoceniReseniFormSet( | ||||
| 				initial = self.aktualni_hodnoceni() | ||||
| 				) | ||||
| 		ctx['poznamka_form'] = f.PoznamkaReseniForm(instance=self.reseni) | ||||
| 		return ctx | ||||
| 
 | ||||
| 
 | ||||
|  | @ -233,10 +234,14 @@ def hodnoceniReseniView(request, pk, *args, **kwargs): | |||
| 	# FIXME: Použit initial i tady a nebastlit hodnocení tak nízkoúrovňově | ||||
| 	# Also: https://docs.djangoproject.com/en/2.2/topics/forms/modelforms/#django.forms.ModelForm | ||||
| 	formset = f.OhodnoceniReseniFormSet(request.POST) | ||||
| 	poznamka_form = f.PoznamkaReseniForm(request.POST, instance=reseni) | ||||
| 	# TODO: Napsat validaci formuláře a formsetu | ||||
| 	# TODO: Implementovat větev, kdy formulář validní není. | ||||
| 	if formset.is_valid(): | ||||
| 	if formset.is_valid() and poznamka_form.is_valid(): | ||||
| 		with transaction.atomic(): | ||||
| 			# Poznámka je jednoduchá na zpracování: | ||||
| 			poznamka_form.save() | ||||
| 
 | ||||
| 			# Smažeme všechna dosavadní hodnocení tohoto řešení | ||||
| 			qs = m.Hodnoceni.objects.filter(reseni=reseni) | ||||
| 			logger.info(f"Will delete {qs.count()} objects: {qs}") | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Pavel "LEdoian" Turinsky
						Pavel "LEdoian" Turinsky