Upgrade hlasovátka pro přednášky
(jméno tahá z přihlášeného účtu, účastník může měnit svá hlasování)
This commit is contained in:
		
							parent
							
								
									2f3a24ec55
								
							
						
					
					
						commit
						93f0e8af5a
					
				
					 2 changed files with 29 additions and 20 deletions
				
			
		|  | @ -17,19 +17,17 @@ Jak moc by ses chtěl(a) zúčastnit následujících přednášek? | ||||||
| 
 | 
 | ||||||
| <form enctype="multipart/form-data" action="." method="post"> | <form enctype="multipart/form-data" action="." method="post"> | ||||||
|   {% csrf_token %} |   {% csrf_token %} | ||||||
|   <table>{{form.as_table}} |  | ||||||
|   </table> |  | ||||||
|   <table> |   <table> | ||||||
|     {% for p in prednasky.prednaska_set.all %} |     {% for p, h in prednasky %} | ||||||
|     <tr><td><label>{{p.org}}: <span style="font-size: 175%">{{p.nazev}}</span></label></td></tr> |     <tr><td><label>{{p.org}}: <span style="font-size: 175%">{{p.nazev}}</span></label></td></tr> | ||||||
|     <tr><td><p><i>{{p.anotace}}</i></p></td></tr> |     <tr><td><p><i>{{p.anotace}}</i></p></td></tr> | ||||||
|     <tr><td><label>Obor: </label> {{p.obor}}</td></tr> |     <tr><td><label>Obor: </label> {{p.obor}}</td></tr> | ||||||
|     <tr><td><label>Obtížnost: </label> {{p.obtiznost}}</td>   </tr> |     <tr><td><label>Obtížnost: </label> {{p.obtiznost}}</td>   </tr> | ||||||
|     {% if p.klicova %}<tr><td><label>Klíčová slova: </label> {{p.klicova}}</td></tr>{% endif%} |     {% if p.klicova %}<tr><td><label>Klíčová slova: </label> {{p.klicova}}</td></tr>{% endif%} | ||||||
|     <tr><td>Hodnocení: |     <tr><td>Hodnocení: | ||||||
|         <INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="-1"> rozhodně nechci |         <INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="-1" {% if h == -1 %} CHECKED="checked" {% endif %} > rozhodně nechci | ||||||
|         <INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="0" checked> je mi to jedno |         <INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="0" {% if h == 0 %} CHECKED="checked" {% endif %}> je mi to jedno | ||||||
|         <INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="1"> rozhodně chci |         <INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="1" {% if h == 1 %} CHECKED="checked" {% endif %}> rozhodně chci | ||||||
|     </td></tr> |     </td></tr> | ||||||
|     <tr><td> </td></tr> |     <tr><td> </td></tr> | ||||||
|     {% endfor %} |     {% endfor %} | ||||||
|  |  | ||||||
|  | @ -4,41 +4,52 @@ from django.views import generic | ||||||
| from django.shortcuts import HttpResponseRedirect | from django.shortcuts import HttpResponseRedirect | ||||||
| from django.core.exceptions import ObjectDoesNotExist | from django.core.exceptions import ObjectDoesNotExist | ||||||
| from django.db.models import Sum | from django.db.models import Sum | ||||||
|  | from django.forms import Form | ||||||
| 
 | 
 | ||||||
| from prednasky.models import Prednaska, Hlasovani, Seznam, STAV_NAVRH | from prednasky.models import Prednaska, Hlasovani, Seznam, STAV_NAVRH | ||||||
| from seminar.models import Soustredeni | from seminar.models import Soustredeni, Osoba | ||||||
| from prednasky.forms import NewPrednaskyForm |  | ||||||
| 
 | 
 | ||||||
| def newPrednaska(request): | def newPrednaska(request): | ||||||
| 	# hlasovani se vztahuje k nejnovejsimu soustredeni | 	# hlasovani se vztahuje k nejnovejsimu soustredeni | ||||||
| 	sous = Soustredeni.objects.first() | 	sous = Soustredeni.objects.first() | ||||||
| 	seznam = Seznam.objects.filter(soustredeni = sous, stav = STAV_NAVRH).first() | 	seznam = Seznam.objects.all().first() | ||||||
| 	print(seznam) | 	osoba = Osoba.objects.filter(user=request.user).first() | ||||||
|  | 	ucastnik = osoba.plne_jmeno() + ' ' + str(osoba.id) | ||||||
| 	# obsluha formulare | 	# obsluha formulare | ||||||
| 	if request.method == 'POST': | 	if request.method == 'POST': | ||||||
| 		form = NewPrednaskyForm(request.POST, request.FILES) | 		form = Form(request.POST, request.FILES) | ||||||
| 		if form.is_valid(): | 		if form.is_valid(): | ||||||
| 			jmeno = form.cleaned_data['ucastnik'] | 			# id z důvodu duplicitních jmen (přechod z jména na objekt Osoby nějak kape na tom, | ||||||
|  | 			# že všechna předchozí hlasování zde mají náhodný string…) | ||||||
|  | 			# TODO Změnit to na Osobu | ||||||
|  | 
 | ||||||
|  | 			# TODO v následujících řádcích je zbytečně mnoho dotazů na QuerySet (pokud účastník hlasoval, hlasoval u všech) | ||||||
| 			for i in request.POST: | 			for i in request.POST: | ||||||
| 				if i[0] == 'q': | 				if i[0] == 'q': | ||||||
| 					hlasovani = Hlasovani() | 					prednaska = Prednaska.objects.filter(pk=int(i[1:]))[0] | ||||||
| 					print("q:"+i[1:]) | 					hlasovani = Hlasovani.objects.filter(ucastnik=ucastnik, prednaska=prednaska).first() | ||||||
| 					hlasovani.prednaska = Prednaska.objects.filter(pk = int(i[1:]))[0] | 					if not hlasovani: | ||||||
|  | 						hlasovani = Hlasovani() | ||||||
|  | 						hlasovani.prednaska = prednaska | ||||||
|  | 						hlasovani.ucastnik = ucastnik | ||||||
|  | 						hlasovani.seznam = seznam | ||||||
| 					hlasovani.body = int(request.POST[i]) | 					hlasovani.body = int(request.POST[i]) | ||||||
| 					hlasovani.ucastnik = jmeno |  | ||||||
| 					hlasovani.seznam = seznam |  | ||||||
| 					hlasovani.save() | 					hlasovani.save() | ||||||
| 
 | 
 | ||||||
| 			# presmerovani na prave vzniklou galerii | 			# presmerovani na prave vzniklou galerii | ||||||
| 			return HttpResponseRedirect('./hotovo') | 			return HttpResponseRedirect('./hotovo') | ||||||
| 
 | 
 | ||||||
| 	else: | 	def prednaska_hodnoceni(prednaska): | ||||||
| 		form = NewPrednaskyForm() | 		h = Hlasovani.objects.filter(ucastnik=ucastnik, prednaska=prednaska).first() | ||||||
|  | 		if h: | ||||||
|  | 			return prednaska, h.body | ||||||
|  | 		else: | ||||||
|  | 			return prednaska, 0 | ||||||
| 
 | 
 | ||||||
| 	return render( | 	return render( | ||||||
| 		request, | 		request, | ||||||
| 		'prednasky/base.html', | 		'prednasky/base.html', | ||||||
| 		{'form': form, 'prednasky': seznam} | 		{'prednasky': map(prednaska_hodnoceni, seznam.prednaska_set.all())} | ||||||
| 	) | 	) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Jonas Havelka
						Jonas Havelka