diff --git a/tvorba/templates/tvorba/org/vyroba_problemu.html b/tvorba/templates/tvorba/org/vyroba_problemu.html new file mode 100644 index 00000000..721287c3 --- /dev/null +++ b/tvorba/templates/tvorba/org/vyroba_problemu.html @@ -0,0 +1,47 @@ +{% extends "base.html" %} + +{% block content %} +

+ {% block nadpis1a %} + Zadané problémy k tématu {{ tema }} + {# TODO: Jak chceme umožnit problémy jak k témátku tak všechny? #} + {% endblock %} +

+
+ {% csrf_token %} + + + + + + + {% for obj in object_list %} + + + + + + {% endfor %} +
{# checkbox #}Úloha/ProblémStav{# admin #}
+ {{ obj.nazev }}{{ obj.get_stav_display }}🔧
+ Označené problémy označit jako: + +
+ + +

Přidat problémy

+
+ {% csrf_token %} + {{ form }} + {# - Téma, čísla úloh, čísla problémů, šablona názvu problému. #} +
+ + +

TODO: Help text: jak vypadá formát čísel, co se dá psát do šablony

+

Pokud chceš přidat jen jeden problém nebo vyrobit témátko, použij k tomu spíš Admin 🔧. + +{% endblock content %} diff --git a/tvorba/urls.py b/tvorba/urls.py index e662491c..4d3077d5 100644 --- a/tvorba/urls.py +++ b/tvorba/urls.py @@ -72,4 +72,6 @@ urlpatterns = [ org_required(views.HromadnePridaniView.as_view()), name="hromadne_pridani" ), + + path('test/zadavatko_problemu', org_required(views.zadavatkoProblemuView), name='zadavatko_problemu'), ] diff --git a/tvorba/views/__init__.py b/tvorba/views/__init__.py index 823ddd96..7ef34908 100644 --- a/tvorba/views/__init__.py +++ b/tvorba/views/__init__.py @@ -1,6 +1,9 @@ # Dočsasné views from .docasne import * +# Zadávátko problémů +from .zadavatko_problemu import zadavatkoProblemuView + # Zbytek from django.shortcuts import get_object_or_404, render diff --git a/tvorba/views/zadavatko_problemu.py b/tvorba/views/zadavatko_problemu.py new file mode 100644 index 00000000..e78021aa --- /dev/null +++ b/tvorba/views/zadavatko_problemu.py @@ -0,0 +1,40 @@ +import seminar.models as m +from django.shortcuts import render + + +def zadavatkoProblemuView(req, problem=None): + template_name = 'tvorba/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 + + # 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 + # - Umět filtrovat jen na nevyřešené problémy (Návrhy, Smazané a Vyřešené nechci vidět vždycky) + # - 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)? +