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? #} | 	{# TODO: Jak chceme umožnit problémy jak k témátku tak všechny? #} | ||||||
|     {% endblock %} |     {% endblock %} | ||||||
|   </h1> |   </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 %} |   {% for obj in object_list %} | ||||||
|     <tr> |     <tr> | ||||||
| 		{%  %} | 		<td><input type=checkbox name="problem_id" value="{{ obj.pk }}" id="problem_{{ obj.pk }}"</td> | ||||||
| 	  <td><input type=checkbox id="problem_{{ obj.pk }}"</td> |  | ||||||
| 	  <td>{{ obj.nazev }}</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> | 	</tr> | ||||||
|   {% endfor %} |   {% endfor %} | ||||||
|  |   </table> | ||||||
|   Označené problémy označit jako: <select name=akce> |   Označené problémy označit jako: <select name=akce> | ||||||
|       <option value="{{ STAV_ZADANY }}">Zadaný</option> | 	  {% for k,v in STAVY.items %} | ||||||
| 	  {# TODO: ty další #} | 	  <option value="{{ k }}">{{ v }}</option> | ||||||
|  | 	  {% endfor %} | ||||||
|     </select> |     </select> | ||||||
|     <input type=submit value=Proveď> |     <input type=submit value=Proveď> | ||||||
|   </form></table> |   </form> | ||||||
| 
 | 
 | ||||||
|   <hrule> |   <hrule> | ||||||
|   <h1> Přidat problémy </h1> |   <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>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 %} | {% endblock content %} | ||||||
|  |  | ||||||
|  | @ -116,4 +116,6 @@ urlpatterns = [ | ||||||
| 		org_required(views.HromadnePridaniView.as_view()), | 		org_required(views.HromadnePridaniView.as_view()), | ||||||
| 		name="hromadne_pridani" | 		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 | # Dočsasné views | ||||||
| from .docasne import * | from .docasne import * | ||||||
|  | 
 | ||||||
|  | from .zadavatko_problemu import zadavatkoProblemuView | ||||||
|  |  | ||||||
|  | @ -1,15 +1,23 @@ | ||||||
| import seminar.models as m | import seminar.models as m | ||||||
|  | from django.shortcuts import render | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def zadavatkoProblemuView(req, problem=None): | def zadavatkoProblemuView(req, problem=None): | ||||||
| 	template_name = 'seminar/templates/seminar/org/vyroba_problemu.html' | 	template_name = 'seminar/org/vyroba_problemu.html' | ||||||
| 	if problem=None: | 
 | ||||||
| 		problemy = m.Problem.objects.all() | 	if req.method == 'POST': | ||||||
| 		# TODO: Možná jen úlohy a problémy? | 		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: | 	else: | ||||||
| 		problemy = problem.podproblemy_rekurzivne | 		problemy = problem.podproblemy_rekurzivne | ||||||
| 	 | 	 | ||||||
| 	# --- snip --- |  | ||||||
| 	# Je potřeba mít v kontextu: | 	# Je potřeba mít v kontextu: | ||||||
| 	#	- seznam příslušných problémů | 	#	- seznam příslušných problémů | ||||||
| 	#	- Formulář na vybírání problémů a společné změny | 	#	- 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… | 	#	- 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