Browse Source

Soustředění: seznam účastnických mailů

a sloupec Poznámka do tabulky k tisku (kvůli požadavkům na stravu)
remotes/origin/test
Matěj Kocián 7 years ago
parent
commit
d6ff08b23f
  1. 3
      seminar/templates/seminar/soustredeni/seznam_soustredeni.html
  2. 2
      seminar/templates/seminar/soustredeni/seznam_ucastniku.html
  3. 43
      seminar/urls.py
  4. 28
      seminar/views.py

3
seminar/templates/seminar/soustredeni/seznam_soustredeni.html

@ -49,7 +49,8 @@
<a href="../{{soustredeni.pk}}/obalky.pdf">Vygenerovat obálky pro účastníky</a><br>
Seznam účastníků -
<a href="../{{soustredeni.pk}}/seznam_ucastniku">HTML tabulka pro tisk</a>,
<a href="../{{soustredeni.pk}}/export_ucastniku">CSV</a><br>
<a href="../{{soustredeni.pk}}/export_ucastniku">CSV</a>,
<a href="../{{soustredeni.pk}}/maily_ucastniku">E-maily</a><br>
<a href="../{{soustredeni.pk}}/stvrzenky/42">Stvrzenky <i>(42 v URL nahraďte prvním číslem z rozsahu)</i></a>
</div>
{% endif %}

2
seminar/templates/seminar/soustredeni/seznam_ucastniku.html

@ -18,6 +18,7 @@
<th nowrap>Jméno</th>
<th nowrap>Maturita</th>
<th nowrap>Mobil</th>
<th nowrap>Poznámka</th>
<th class="fill"></th>
</tr>
{% for sous_ucast in object_list %}
@ -25,6 +26,7 @@
<td nowrap>{{sous_ucast.resitel}}</td>
<td nowrap>{{sous_ucast.resitel.rok_maturity}}</td>
<td nowrap>{{sous_ucast.resitel.telefon}}</td>
<td nowrap>{{sous_ucast.poznamka}}</td>
<td class="fill"></td>
</tr>

43
seminar/urls.py

@ -1,5 +1,5 @@
from django.conf.urls import * # NOQA
from django.conf.urls import patterns, url
from django.conf.urls import url, include
from django.contrib.auth.decorators import user_passes_test
from . import views, export
from utils import staff_member_required
@ -25,13 +25,40 @@ urlpatterns = [
url(r'^problem/(?P<pk>\d+)/(?P<prispevek>\d+)/$', views.PrispevekView.as_view(), name='seminar_problem_prispevek'),
# Soustredeni
url(r'^soustredeni/probehlo/$', views.SoustredeniListView.as_view(),
name = 'seminar_seznam_soustredeni'),
url(r'^soustredeni/probehlo/(?P<soustredeni>\d+)/$', views.SoustredeniView.as_view(), name='seminar_soustredeni'),
url(r'^soustredeni/(?P<soustredeni>\d+)/seznam_ucastniku$', staff_member_required(views.SoustredeniUcastniciView.as_view()), name='soustredeni_ucastnici'),
url(r'^soustredeni/(?P<soustredeni>\d+)/stvrzenky/(?P<first_num>\d+)$', staff_member_required(views.soustredeniStvrzenkyExportView), name='soustredeni_stvrzenky'),
url(r'^soustredeni/(?P<soustredeni>\d+)/export_ucastniku$', staff_member_required(views.soustredeniUcastniciExportView), name='soustredeni_ucastnici_export'),
url(r'^soustredeni/(?P<soustredeni>\d+)/fotogalerie/', include('galerie.urls')),
url(
r'^soustredeni/probehlo/$',
views.SoustredeniListView.as_view(),
name='seminar_seznam_soustredeni'
),
url(
r'^soustredeni/probehlo/(?P<soustredeni>\d+)/$',
views.SoustredeniView.as_view(),
name='seminar_soustredeni'
),
url(
r'^soustredeni/(?P<soustredeni>\d+)/seznam_ucastniku$',
staff_member_required(views.SoustredeniUcastniciView.as_view()),
name='soustredeni_ucastnici'
),
url(
r'^soustredeni/(?P<soustredeni>\d+)/maily_ucastniku$',
staff_member_required(views.SoustredeniMailyUcastnikuView.as_view()),
name='maily_ucastniku'
),
url(
r'^soustredeni/(?P<soustredeni>\d+)/stvrzenky/(?P<first_num>\d+)$',
staff_member_required(views.soustredeniStvrzenkyExportView),
name='soustredeni_stvrzenky'
),
url(
r'^soustredeni/(?P<soustredeni>\d+)/export_ucastniku$',
staff_member_required(views.soustredeniUcastniciExportView),
name='soustredeni_ucastnici_export'
),
url(
r'^soustredeni/(?P<soustredeni>\d+)/fotogalerie/',
include('galerie.urls')
),
# Zadani
url(r'^zadani/aktualni/$', views.AktualniZadaniView, name='seminar_aktualni_zadani'),

28
seminar/views.py

@ -578,6 +578,7 @@ def obalkyView(request,resitele):
shutil.rmtree(tempdir)
return response
def obalkovaniView(request, rocnik, cislo):
rocnik = Rocnik.objects.get(rocnik=rocnik)
cislo = Cislo.objects.get(rocnik=rocnik, cislo=cislo)
@ -640,13 +641,30 @@ def soustredeniObalkyView(request,soustredeni):
soustredeni = get_object_or_404(Soustredeni,id = soustredeni)
return obalkyView(request,soustredeni.ucastnici.all())
class SoustredeniUcastniciView(generic.ListView):
class SoustredeniUcastniciBaseView(generic.ListView):
model = Soustredeni_Ucastnici
template_name = 'seminar/soustredeni/seznam_ucastniku.html'
def get_queryset(self):
self.soustredeni = get_object_or_404(Soustredeni, id=self.kwargs["soustredeni"])
return Soustredeni_Ucastnici.objects.filter(soustredeni=self.soustredeni).select_related('resitel')
soustredeni = get_object_or_404(
Soustredeni,
pk=self.kwargs["soustredeni"]
)
return Soustredeni_Ucastnici.objects.filter(
soustredeni=soustredeni).select_related('resitel')
class SoustredeniMailyUcastnikuView(SoustredeniUcastniciBaseView):
"""Seznam e-mailů řešitelů oddělených čárkami"""
model = Soustredeni_Ucastnici
template_name = 'seminar/soustredeni/maily_ucastniku.txt'
class SoustredeniUcastniciView(SoustredeniUcastniciBaseView):
"""HTML tabulka účastníků pro tisk"""
model = Soustredeni_Ucastnici
template_name = 'seminar/soustredeni/seznam_ucastniku.html'
def soustredeniStvrzenkyExportView(request,soustredeni,first_num):
first_num = int(first_num)

Loading…
Cancel
Save