diff --git a/seminar/templates/seminar/orgorozcestnik.html b/seminar/templates/seminar/orgorozcestnik.html
new file mode 100644
index 00000000..5bd75403
--- /dev/null
+++ b/seminar/templates/seminar/orgorozcestnik.html
@@ -0,0 +1,86 @@
+{% extends "base.html" %}
+
+{% block content %}
+
Informace, komunikace
+
+
+ - wiki obsahuje různé návody a know-how
+ - Riot chatování s dalšími orgy
+ - Kanboard správa TODO
+
+
+ - přidat novinku na web
+
+
+
+Tvorba čísla
+
+
+
+
+Moje problémy
+
+ Témata
+
+{% for t in temata %}
+- {{ t }}
+{% endfor %}
+
+
+ Úlohy
+
+{% for u in ulohy %}
+- {{ u }}
+{% endfor %}
+
+
+ Články
+
+{% for c in clanky %}
+- {{ c }}
+{% endfor %}
+
+
+
+Soustředění
+
+
+ - přednášky
+
+
+
+ - proběhlá soustředění
+
+ - vytvoření galerie
+ - stažení seznamu účastníků
+ - obálky
+
+
+
+
+
+Můj profil
+
+
+
+
+Nemůžeš najít, co hledáš? Může to být v administračním rozhraní webu.
+{% endblock content %}
+
diff --git a/seminar/urls.py b/seminar/urls.py
index 9c72717e..ed42a7f8 100644
--- a/seminar/urls.py
+++ b/seminar/urls.py
@@ -91,7 +91,7 @@ urlpatterns = [
path('org/vloz_body//',
staff_member_required(views.VlozBodyView.as_view()),name='seminar_org_vlozbody'),
# příprava na nestatický orgorozcestník
- path('org/rozcestnik',
+ path('org/rozcestnik/',
staff_member_required(views.OrgoRozcestnikView.as_view()),name='seminar_org_rozcestnik'),
path('prihlaska/',views.prihlaskaView, name='seminar_prihlaska'),
path('login/', views.LoginView.as_view(), name='login'),
diff --git a/seminar/views/views_all.py b/seminar/views/views_all.py
index a80623d7..242c4962 100644
--- a/seminar/views/views_all.py
+++ b/seminar/views/views_all.py
@@ -10,6 +10,7 @@ from django.http import Http404,HttpResponseBadRequest,HttpResponseRedirect
from django.db.models import Q, Sum, Count
from django.views.decorators.csrf import ensure_csrf_cookie
from django.views.generic.edit import FormView, CreateView
+from django.views.generic.base import TemplateView
from django.contrib.auth import authenticate, login, get_user_model, logout
from django.contrib.auth import views as auth_views
from django.contrib.auth.models import User
@@ -200,7 +201,7 @@ class AktualniZadaniView(TreeNodeView):
# "cisla" : cisla
# })
# return render(request, 'seminar/tematka/rozcestnik.html', {"tematka": tematka, "rocnik" : nastaveni.aktualni_rocnik().rocnik})
-#
+#
#def ZadaniAktualniVysledkovkaView(request):
# nastaveni = get_object_or_404(Nastaveni)
@@ -875,12 +876,39 @@ def oldObalkovaniView(request, rocnik, cislo):
### Orgostránky
-def OrgoRozcestnikView(request):
+class OrgoRozcestnikView(TemplateView):
''' Zobrazí organizátorský rozcestník.'''
- posledni_soustredeni = Soustredeni.objects.order_by('-datum_konce').first()
template_name = 'seminar/orgorozcestnik.html'
- content_type = 'text/plain; charset=UTF8'
+
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ context['posledni_soustredeni'] = Soustredeni.objects.order_by('-datum_konce').first()
+ nastaveni = Nastaveni.objects.first()
+ aktualni_rocnik = nastaveni.aktualni_rocnik
+ context['posledni_cislo_url'] = nastaveni.aktualni_cislo.verejne_url()
+ # TODO možná chceme odkazovat na právě rozpracované číslo, a ne to poslední vydané
+ # pokud nechceme haluzit kód (= poradi) dalšího čísla, bude asi potřeba jít
+ # přes treenody (a dát si přitom pozor na MezicisloNode)
+
+ u = self.request.user
+ os = s.Osoba.objects.get(user=u)
+ organizator = s.Organizator.objects.get(osoba=os)
+ temata_garant = s.Tema.objects.filter(garant=organizator,
+ rocnik=aktualni_rocnik)
+ #FIXME: přidat opravovatel, stav='STAV_ZADANY'
+ ulohy_garant = s.Uloha.objects.filter(garant=organizator,
+ cislo_zadani__rocnik=aktualni_rocnik)
+ clanky_garant = s.Clanek.objects.filter(garant=organizator,
+ cislo__rocnik=aktualni_rocnik)
+
+ context['temata'] = temata_garant
+ context['ulohy'] = ulohy_garant
+ context['clanky'] = clanky_garant
+ context['organizator'] = organizator
+ return context
+
+ #content_type = 'text/plain; charset=UTF8'
#XXX
### Tituly
@@ -1109,57 +1137,57 @@ def prihlaska_log_gdpr_safe(logger, gdpr_logger, msg, form_data):
from django.forms.models import model_to_dict
def resitelEditView(request):
- err_logger = logging.getLogger('seminar.prihlaska.problem')
- ## Načtení objektu Osoba a Resitel, patrici k aktuálně přihlášenému uživately
- u = request.user
- osoba_edit = Osoba.objects.get(user=u)
- resitel_edit = osoba_edit.resitel
- user_edit = osoba_edit.user
- ## Vytvoření slovníku, kterým předvyplním formulář
- prefill_1=model_to_dict(user_edit)
- prefill_2=model_to_dict(resitel_edit)
- prefill_3=model_to_dict(osoba_edit)
- prefill_1.update(prefill_2)
- prefill_1.update(prefill_3)
- form = ProfileEditForm(initial=prefill_1)
- ## Změna údajů a jejich uložení
- if request.method == 'POST':
- form = ProfileEditForm(request.POST)
- if form.is_valid():
- ## Změny v osobě
- fcd = form.cleaned_data
- osoba_edit.jmeno = fcd['jmeno']
- osoba_edit.prijmeni = fcd['prijmeni']
- osoba_edit.pohlavi_muz = fcd['pohlavi_muz']
- osoba_edit.email = fcd['email']
- osoba_edit.telefon = fcd['telefon']
- osoba_edit.ulice = fcd['ulice']
- osoba_edit.mesto = fcd['mesto']
- osoba_edit.psc = fcd['psc']
- ## Změny v osobě s podmínkami
- if fcd.get('spam',False):
- osoba_edit.datum_souhlasu_zasilani = date.today()
- if fcd.get('stat','') in ('CZ','SK'):
- osoba_edit.stat = fcd['stat']
- else:
- ## Neznámá země
- msg = "Unknown country {}".format(fcd['stat_text'])
-
- ## Změny v řešiteli
- resitel_edit.skola = fcd['skola']
- resitel_edit.rok_maturity = fcd['rok_maturity']
- resitel_edit.zasilat = fcd['zasilat']
- if fcd.get('skola'):
- resitel_edit.skola = fcd['skola']
- else:
- # Unknown school - log it
- msg = "Unknown school {}, {}".format(fcd['skola_nazev'],fcd['skola_adresa'])
- resitel_edit.save()
- osoba_edit.save()
- return HttpResponseRedirect('/thanks/')
- else:
- ## Stránka před odeslaním formuláře = předvyplněný formulář
- return render(request, 'seminar/profil/edit.html', {'form': form})
+ err_logger = logging.getLogger('seminar.prihlaska.problem')
+ ## Načtení objektu Osoba a Resitel, patrici k aktuálně přihlášenému uživately
+ u = request.user
+ osoba_edit = Osoba.objects.get(user=u)
+ resitel_edit = osoba_edit.resitel
+ user_edit = osoba_edit.user
+ ## Vytvoření slovníku, kterým předvyplním formulář
+ prefill_1=model_to_dict(user_edit)
+ prefill_2=model_to_dict(resitel_edit)
+ prefill_3=model_to_dict(osoba_edit)
+ prefill_1.update(prefill_2)
+ prefill_1.update(prefill_3)
+ form = ProfileEditForm(initial=prefill_1)
+ ## Změna údajů a jejich uložení
+ if request.method == 'POST':
+ form = ProfileEditForm(request.POST)
+ if form.is_valid():
+ ## Změny v osobě
+ fcd = form.cleaned_data
+ osoba_edit.jmeno = fcd['jmeno']
+ osoba_edit.prijmeni = fcd['prijmeni']
+ osoba_edit.pohlavi_muz = fcd['pohlavi_muz']
+ osoba_edit.email = fcd['email']
+ osoba_edit.telefon = fcd['telefon']
+ osoba_edit.ulice = fcd['ulice']
+ osoba_edit.mesto = fcd['mesto']
+ osoba_edit.psc = fcd['psc']
+ ## Změny v osobě s podmínkami
+ if fcd.get('spam',False):
+ osoba_edit.datum_souhlasu_zasilani = date.today()
+ if fcd.get('stat','') in ('CZ','SK'):
+ osoba_edit.stat = fcd['stat']
+ else:
+ ## Neznámá země
+ msg = "Unknown country {}".format(fcd['stat_text'])
+
+ ## Změny v řešiteli
+ resitel_edit.skola = fcd['skola']
+ resitel_edit.rok_maturity = fcd['rok_maturity']
+ resitel_edit.zasilat = fcd['zasilat']
+ if fcd.get('skola'):
+ resitel_edit.skola = fcd['skola']
+ else:
+ # Unknown school - log it
+ msg = "Unknown school {}, {}".format(fcd['skola_nazev'],fcd['skola_adresa'])
+ resitel_edit.save()
+ osoba_edit.save()
+ return HttpResponseRedirect('/thanks/')
+ else:
+ ## Stránka před odeslaním formuláře = předvyplněný formulář
+ return render(request, 'seminar/profil/edit.html', {'form': form})
def prihlaskaView(request):
generic_logger = logging.getLogger('seminar.prihlaska')