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, | 		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 | # FIXME: Ideálně by mělo být součástí třídy níž, ale neumím to udělat | ||||||
| DATE_FORMAT = '%Y-%m-%d' | DATE_FORMAT = '%Y-%m-%d' | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -85,15 +85,14 @@ $(document).ready(function(){ | ||||||
| <p>Žádné přílohy</p> | <p>Žádné přílohy</p> | ||||||
| {% endif %} | {% endif %} | ||||||
| 
 | 
 | ||||||
|  | <form method=post> | ||||||
| {# Poznámka #} | {# Poznámka #} | ||||||
| {% if object.poznamka %} |  | ||||||
| <h3>Poznámka:</h3> | <h3>Poznámka:</h3> | ||||||
| {{ object.poznamka }} | <p>{{ poznamka_form.poznamka }}</p> | ||||||
| {% endif %} |  | ||||||
| 
 | 
 | ||||||
| {# Hodnocení: #} | {# Hodnocení: #} | ||||||
| <h3>Hodnocení:</h3> | <h3>Hodnocení:</h3> | ||||||
| <form method=post><table> | <table> | ||||||
| {% csrf_token %} | {% csrf_token %} | ||||||
| {{ form.management_form }} | {{ form.management_form }} | ||||||
| </table> | </table> | ||||||
|  |  | ||||||
|  | @ -206,9 +206,9 @@ class DetailReseniView(DetailView): | ||||||
| 	template_name = 'seminar/odevzdavatko/detail.html' | 	template_name = 'seminar/odevzdavatko/detail.html' | ||||||
| 	 | 	 | ||||||
| 	def aktualni_hodnoceni(self): | 	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 | 		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( | 			result.append( | ||||||
| 				{"problem": hodn.problem,  | 				{"problem": hodn.problem,  | ||||||
| 				"body": hodn.body, | 				"body": hodn.body, | ||||||
|  | @ -221,6 +221,7 @@ class DetailReseniView(DetailView): | ||||||
| 		ctx['form'] = f.OhodnoceniReseniFormSet( | 		ctx['form'] = f.OhodnoceniReseniFormSet( | ||||||
| 				initial = self.aktualni_hodnoceni() | 				initial = self.aktualni_hodnoceni() | ||||||
| 				) | 				) | ||||||
|  | 		ctx['poznamka_form'] = f.PoznamkaReseniForm(instance=self.reseni) | ||||||
| 		return ctx | 		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ě | 	# 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 | 	# Also: https://docs.djangoproject.com/en/2.2/topics/forms/modelforms/#django.forms.ModelForm | ||||||
| 	formset = f.OhodnoceniReseniFormSet(request.POST) | 	formset = f.OhodnoceniReseniFormSet(request.POST) | ||||||
|  | 	poznamka_form = f.PoznamkaReseniForm(request.POST, instance=reseni) | ||||||
| 	# TODO: Napsat validaci formuláře a formsetu | 	# TODO: Napsat validaci formuláře a formsetu | ||||||
| 	# TODO: Implementovat větev, kdy formulář validní není. | 	# TODO: Implementovat větev, kdy formulář validní není. | ||||||
| 	if formset.is_valid(): | 	if formset.is_valid() and poznamka_form.is_valid(): | ||||||
| 		with transaction.atomic(): | 		with transaction.atomic(): | ||||||
|  | 			# Poznámka je jednoduchá na zpracování: | ||||||
|  | 			poznamka_form.save() | ||||||
|  | 
 | ||||||
| 			# Smažeme všechna dosavadní hodnocení tohoto řešení | 			# Smažeme všechna dosavadní hodnocení tohoto řešení | ||||||
| 			qs = m.Hodnoceni.objects.filter(reseni=reseni) | 			qs = m.Hodnoceni.objects.filter(reseni=reseni) | ||||||
| 			logger.info(f"Will delete {qs.count()} objects: {qs}") | 			logger.info(f"Will delete {qs.count()} objects: {qs}") | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Pavel "LEdoian" Turinsky
						Pavel "LEdoian" Turinsky