WIP: Nástroj pro plošné vyrábění problémů #17
					 4 changed files with 47 additions and 13 deletions
				
			
		|  | @ -7,21 +7,30 @@ | |||
| 	{# TODO: Jak chceme umožnit problémy jak k témátku tak všechny? #} | ||||
|     {% endblock %} | ||||
|   </h1> | ||||
|   <table><form> | ||||
|   <form method=POST><table class="dosla_reseni"> | ||||
| 	{% csrf_token %} | ||||
| 	<tr> | ||||
| 	  <th>{# checkbox #}</th> | ||||
| 	  <th>Úloha/Problém</th> | ||||
| 	  <th>Stav</th> | ||||
| 	  <th>{# admin #}</th> | ||||
| 	</tr> | ||||
|   {% for obj in object_list %} | ||||
|     <tr> | ||||
| 		{%  %} | ||||
| 	  <td><input type=checkbox id="problem_{{ obj.pk }}"</td> | ||||
| 		<td><input type=checkbox name="problem_id" value="{{ obj.pk }}" id="problem_{{ obj.pk }}"</td> | ||||
| 	  <td>{{ obj.nazev }}</td> | ||||
| 	  <td><a href="{% url 'admin:seminar_problem_change' obj %}">Zobrazit v Adminu</a></td> | ||||
| 	  <td>{{ obj.get_stav_display }}</td> | ||||
| 	  <td><a href="{% url 'admin:seminar_problem_change' obj.pk %}">🔧</a></td> | ||||
| 	</tr> | ||||
|   {% endfor %} | ||||
|   </table> | ||||
|   Označené problémy označit jako: <select name=akce> | ||||
|       <option value="{{ STAV_ZADANY }}">Zadaný</option> | ||||
| 	  {# TODO: ty další #} | ||||
| 	  {% for k,v in STAVY.items %} | ||||
| 	  <option value="{{ k }}">{{ v }}</option> | ||||
| 	  {% endfor %} | ||||
|     </select> | ||||
|     <input type=submit value=Proveď> | ||||
|   </form></table> | ||||
|   </form> | ||||
| 
 | ||||
|   <hrule> | ||||
|   <h1> Přidat problémy </h1> | ||||
|  | @ -33,6 +42,6 @@ | |||
| 
 | ||||
| 
 | ||||
|   <p>TODO: Help text: jak vypadá formát čísel, co se dá psát do šablony</p> | ||||
|   <p>Pokud chceš přidat jen jeden problém nebo vyrobit témátko, použij k tomu spíš <a href="{% url 'admin:seminar_problem_changelist' %}">Admin</a>. | ||||
|   <p>Pokud chceš přidat jen jeden problém nebo vyrobit témátko, použij k tomu spíš <a href="{% url 'admin:seminar_problem_changelist' %}">Admin 🔧</a>. | ||||
| 
 | ||||
| {% endblock content %} | ||||
|  |  | |||
|  | @ -116,4 +116,6 @@ urlpatterns = [ | |||
| 		org_required(views.HromadnePridaniView.as_view()), | ||||
| 		name="hromadne_pridani" | ||||
| 	), | ||||
| 
 | ||||
| 	path('test/zadavatko_problemu', org_required(views.zadavatkoProblemuView), name='zadavatko_problemu'), | ||||
| ] | ||||
|  |  | |||
|  | @ -2,3 +2,5 @@ from .views_all import * | |||
| 
 | ||||
| # Dočsasné views | ||||
| from .docasne import * | ||||
| 
 | ||||
| from .zadavatko_problemu import zadavatkoProblemuView | ||||
|  |  | |||
|  | @ -1,15 +1,23 @@ | |||
| import seminar.models as m | ||||
| from django.shortcuts import render | ||||
| 
 | ||||
| 
 | ||||
| def zadavatkoProblemuView(req, problem=None): | ||||
| 	template_name = 'seminar/templates/seminar/org/vyroba_problemu.html' | ||||
| 	if problem=None: | ||||
| 		problemy = m.Problem.objects.all() | ||||
| 		# TODO: Možná jen úlohy a problémy? | ||||
| 	template_name = 'seminar/org/vyroba_problemu.html' | ||||
| 
 | ||||
| 	if req.method == 'POST': | ||||
| 		cilovy_stav = req.POST['akce'] | ||||
| 		pr = req.POST['problem_id'] | ||||
| 		print(cilovy_stav, pr) | ||||
| 
 | ||||
| 	if problem is None: | ||||
| 		# Vykradený autocomplete :-) | ||||
| 		rocnik = m.Nastaveni.get_solo().aktualni_rocnik | ||||
| 		problemy = m.Uloha.objects.filter(cislo_zadani__rocnik=rocnik) | ||||
| 		# Věříme, že drtivá většina úložek bude mít číslo zadání už od vzniku, protože vznikly tady. K úložce bez čísla zadání se pořád dá dostat přes témátko, k těm netémátkovým jen z Admina. | ||||
| 	else: | ||||
| 		problemy = problem.podproblemy_rekurzivne | ||||
| 	 | ||||
| 	# --- snip --- | ||||
| 	# Je potřeba mít v kontextu: | ||||
| 	#	- seznam příslušných problémů | ||||
| 	#	- Formulář na vybírání problémů a společné změny | ||||
|  | @ -17,3 +25,16 @@ def zadavatkoProblemuView(req, problem=None): | |||
| 	#	- Formulář na vyrábění problémů – logika má být asi ve forms… | ||||
| 
 | ||||
| 
 | ||||
| 	ctx = {'object_list': problemy, 'form': 'Hello!', 'STAVY': dict(m.Problem.STAV_CHOICES)} | ||||
| 	return render(req, template_name, ctx) | ||||
| 
 | ||||
| # TODO: Přesunout forms někam jinam! (nechtělo se mi počáteční implementaci sekat do spousty souborů, pro vývoj to bylo přehlednější) | ||||
| 
 | ||||
| # NOTE: Formsety nejdou použít, protože my chceme vlastní značítka. | ||||
| #	- Na takovém řádku chceme: | ||||
| #		- Zaškrtávátko s výběrem | ||||
| #		- Přehled stavu: název problému, stav, číslo zadání, počet bodů | ||||
| #		- Nějak snadno umět upravit stav. (Výhledově inlinemodelform + disketka asi) | ||||
| #		- Odkaz do Admina | ||||
| #		- Reset opravovatelů/garantů/… (i.e. podědit z nadproblému)? | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue