Oddělení sousových věcí #56

Merged
zelvuska merged 15 commits from split_sous into master 1 week ago
  1. 1
      galerie/forms.py
  2. 2
      mamweb/urls.py
  3. 7
      soustredeni/__init__.py
  4. 77
      soustredeni/urls.py
  5. 13
      soustredeni/views.py

1
galerie/forms.py

@ -1,5 +1,4 @@
from django import forms from django import forms
from seminar.models import Soustredeni
class KomentarForm(forms.Form): class KomentarForm(forms.Form):
komentar = forms.CharField(label = "Komentář:", max_length = 300, required=False) komentar = forms.CharField(label = "Komentář:", max_length = 300, required=False)

2
mamweb/urls.py

@ -30,7 +30,7 @@ urlpatterns = [
path('', include('prednasky.urls')), path('', include('prednasky.urls')),
# Soustredkova aplikace (ma vlastni podadresare) # Soustredkova aplikace (ma vlastni podadresare)
path('', include('soustredeni.urls')), path('soustredeni/', include('soustredeni.urls')),
# Personalni aplikace (ma vlastni podadresare) # Personalni aplikace (ma vlastni podadresare)
# (profil, osobní údaje, ..., ne autentizace, viz dále) # (profil, osobní údaje, ..., ne autentizace, viz dále)

7
soustredeni/__init__.py

@ -1,5 +1,4 @@
""" """
Obsahuje vše ( na přednášky) ohledně soustředění. Obsahuje vše ( na přednášky a galerie) ohledně soustředění,
tzn. převážně informace o účastech orgů a účastníků a o tom, kdo byl na které konfeře.
TODO stvrzenky? """
"""

77
soustredeni/urls.py

@ -2,44 +2,53 @@ from django.urls import path, include
from . import views from . import views
from personalni.utils import org_required from personalni.utils import org_required
# prefix = soustredeni/
urlpatterns = [ urlpatterns = [
path( path(
'soustredeni/probehlo/', 'probehlo/',
views.SoustredeniListView.as_view(), views.SoustredeniListView.as_view(),
name='seminar_seznam_soustredeni' name='seminar_seznam_soustredeni'
), ),
path( path(
'soustredeni/<int:soustredeni>/seznam_ucastniku', '<int:soustredeni>/',
org_required(views.SoustredeniUcastniciView.as_view()), include(
name='soustredeni_ucastnici' # prefix = 'soustredeni/<int:soustredeni>/'
), [
path( path(
'soustredeni/<int:soustredeni>/maily_ucastniku', 'seznam_ucastniku',
org_required(views.SoustredeniMailyUcastnikuView.as_view()), org_required(views.SoustredeniUcastniciView.as_view()),
name='maily_ucastniku' name='soustredeni_ucastnici'
), ),
path( path(
'soustredeni/<int:soustredeni>/export_ucastniku', 'maily_ucastniku',
org_required(views.soustredeniUcastniciExportView), org_required(views.SoustredeniMailyUcastnikuView.as_view()),
name='soustredeni_ucastnici_export' name='maily_ucastniku'
), ),
path( path(
'soustredeni/<int:soustredeni>/stvrzenky.pdf', 'export_ucastniku',
org_required(views.soustredeniStvrzenkyView), org_required(views.soustredeniUcastniciExportView),
name='soustredeni_ucastnici_stvrzenky' name='soustredeni_ucastnici_export'
), ),
path( path(
'soustredeni/<int:soustredeni>/obalky.pdf', 'stvrzenky.pdf',
org_required(views.soustredeniObalkyView), org_required(views.soustredeniStvrzenkyView),
name='seminar_soustredeni_obalky' name='soustredeni_ucastnici_stvrzenky'
), ),
path( path(
'soustredeni/<int:pk>/abstrakty', 'obalky.pdf',
org_required(views.SoustredeniAbstraktyView.as_view()), org_required(views.soustredeniObalkyView),
name='seminar_soustredeni_abstrakty' name='seminar_soustredeni_obalky'
), ),
path( path(
'soustredeni/<int:soustredeni>/fotogalerie/', 'abstrakty',
include('galerie.urls') org_required(views.SoustredeniAbstraktyView.as_view()),
), name='seminar_soustredeni_abstrakty'
),
path(
'fotogalerie/',
include('galerie.urls')
),
]
)
)
] ]

13
soustredeni/views.py

@ -1,9 +1,8 @@
from django.shortcuts import get_object_or_404, render from django.shortcuts import get_object_or_404, render
from django.http import HttpResponse from django.http import HttpResponse
from django.views import generic from django.views import generic
from django.conf import settings
from django.contrib.staticfiles.finders import find from django.contrib.staticfiles.finders import find
from seminar.models import Soustredeni, Resitel, Soustredeni_Ucastnici, Nastaveni # Tohle je stare a chceme se toho zbavit. Pouzivejte s.ToCoChci
import csv import csv
import tempfile import tempfile
import shutil import shutil
@ -13,6 +12,9 @@ import http
import personalni.views import personalni.views
from .models import Soustredeni, Soustredeni_Ucastnici
from various.models import Nastaveni
class SoustredeniListView(generic.ListView): class SoustredeniListView(generic.ListView):
model = Soustredeni model = Soustredeni
@ -22,7 +24,7 @@ class SoustredeniListView(generic.ListView):
if not self.request.user.je_org: if not self.request.user.je_org:
return super().get_queryset() return super().get_queryset()
return ( return (
Soustredeni.objects super().get_queryset()
.prefetch_related( .prefetch_related(
"ucastnici", "ucastnici__osoba", "ucastnici", "ucastnici__osoba",
"organizatori", "organizatori__osoba", "organizatori", "organizatori__osoba",
@ -63,7 +65,7 @@ class SoustredeniUcastniciView(SoustredeniUcastniciBaseView):
def soustredeniUcastniciExportView(request, soustredeni): def soustredeniUcastniciExportView(request, soustredeni):
soustredeni = get_object_or_404(Soustredeni, id=soustredeni) soustredeni = get_object_or_404(Soustredeni, id=soustredeni)
ucastnici = Resitel.objects.filter(soustredeni=soustredeni) ucastnici = soustredeni.ucastnici.all()
response = HttpResponse(content_type='text/csv') response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="ucastnici.csv"' response['Content-Disposition'] = 'attachment; filename="ucastnici.csv"'
@ -76,7 +78,7 @@ def soustredeniUcastniciExportView(request, soustredeni):
def soustredeniStvrzenkyView(request, soustredeni): def soustredeniStvrzenkyView(request, soustredeni):
soustredeni = get_object_or_404(Soustredeni, id=soustredeni) soustredeni = get_object_or_404(Soustredeni, id=soustredeni)
ucastnici = Resitel.objects.filter(soustredeni=soustredeni) ucastnici = soustredeni.ucastnici.all()
if ucastnici.count() == 0: if ucastnici.count() == 0:
return HttpResponse( return HttpResponse(
render(request, 'universal.html', { render(request, 'universal.html', {
@ -103,3 +105,4 @@ def soustredeniStvrzenkyView(request, soustredeni):
class SoustredeniAbstraktyView(generic.DetailView): class SoustredeniAbstraktyView(generic.DetailView):
model = Soustredeni model = Soustredeni
template_name = 'soustredeni/export_do_abstraktu.html' template_name = 'soustredeni/export_do_abstraktu.html'
pk_url_kwarg = 'soustredeni' # v url bude <int:soustredeni> místo defaultně požadovaného <int:pk>

Loading…
Cancel
Save