from django.urls import path, include
from django.contrib.auth.decorators import user_passes_test
from . import views, export
from .utils import staff_member_required
from django.views.generic.base import RedirectView
from django.contrib.auth import views as auth_views

staff_member_required = user_passes_test(lambda u: u.is_staff)

urlpatterns = [
#	path('aktualni/temata/', views.TemataRozcestnikView),
#	path('<int:rocnik>/t<int:tematko>/', views.TematkoView),

	# Organizatori
	path('co-je-MaM/organizatori/', views.CojemamOrganizatoriView.as_view(), name='organizatori'),
	path('co-je-MaM/organizatori/organizovali/', views.CojemamOrganizatoriStariView.as_view(), name='stari_organizatori'),

	# Archiv
	path('archiv/rocniky/', views.ArchivView.as_view()),
	path('archiv/temata/', views.ArchivTemataView.as_view()),

	path('rocnik/<int:rocnik>/', views.RocnikView.as_view(), name='seminar_rocnik'),
	path('cislo/<int:rocnik>.<int:cislo>/', views.CisloView.as_view(), name='seminar_cislo'), # odkomentované jenom kvůli testování archivu
	path('problem/<int:pk>/', views.ProblemView.as_view(), name='seminar_problem'),
	path('treenode/<int:pk>/', views.TreeNodeView.as_view(), name='seminar_treenode'),
	#path('problem/(?P<pk>\d+)/(?P<prispevek>\d+)/', views.PrispevekView.as_view(), name='seminar_problem_prispevek'),

	# Soustredeni
	path(
		'soustredeni/probehlo/',
		views.SoustredeniListView.as_view(),
		name='seminar_seznam_soustredeni'
	),
	path(
		'soustredeni/<int:soustredeni>/seznam_ucastniku',
		staff_member_required(views.SoustredeniUcastniciView.as_view()),
		name='soustredeni_ucastnici'
	),
	path(
		'soustredeni/<int:soustredeni>/maily_ucastniku',
		staff_member_required(views.SoustredeniMailyUcastnikuView.as_view()),
		name='maily_ucastniku'
	),
	path(
		'soustredeni/<int:soustredeni>/export_ucastniku',
		staff_member_required(views.soustredeniUcastniciExportView),
		name='soustredeni_ucastnici_export'
	),
	path(
		'soustredeni/<int:soustredeni>/fotogalerie/',
		include('galerie.urls')
	),

	# Zadani
	path('zadani/aktualni/', views.AktualniZadaniView.as_view(), name='seminar_aktualni_zadani'),
#	path('zadani/temata/', views.ZadaniTemataView, name='seminar_temata'),
	#path('zadani/vysledkova-listina/', views.ZadaniAktualniVysledkovkaView, name='seminar_vysledky'),
	path('stare-novinky/', views.StareNovinkyView.as_view(), name='stare_novinky'),

	# Clanky
	path('clanky/resitel/', views.ClankyResitelView.as_view(), name='clanky_resitel'),
	#path('clanky/org/', views.ClankyOrganizatorView.as_view(), name='clanky_organizator'),

	# Aesop
	path('aesop-export/mam-rocnik-<int:prvni_rok>.csv', export.ExportRocnikView.as_view(), name='seminar_export_rocnik'),
	path('aesop-export/mam-sous-<str:datum_zacatku>.csv', export.ExportSousView.as_view(), name='seminar_export_sous'),
	path('aesop-export/index.csv', export.ExportIndexView.as_view(), name='seminar_export_index'),

	# Stranky viditelne pouze pro orgy:
	path(
	    'rocnik/<int:rocnik>/vysledkovka.tex',
	    staff_member_required(views.RocnikVysledkovkaView.as_view()),
	    name='seminar_rocnik_vysledkovka'
	),
	path('cislo/<int:rocnik>.<int:cislo>/vysledkovka.tex',
	    staff_member_required(views.CisloVysledkovkaView.as_view()), 
	    name='seminar_cislo_vysledkovka'
	),
	path('cislo/<int:rocnik>.<int:cislo>/obalky.pdf',
		staff_member_required(views.cisloObalkyView), name='seminar_cislo_obalky'),

	path('cislo/<int:rocnik>.<int:cislo>/tituly.tex',
	    	staff_member_required(views.TitulyView), name='seminar_cislo_titul'),
	path('stav',
		staff_member_required(views.StavDatabazeView), name='stav_databaze'),
	path('cislo/<int:rocnik>.<int:cislo>/obalkovani',
		staff_member_required(views.ObalkovaniView.as_view()), name='seminar_cislo_resitel_obalkovani'),
	path('soustredeni/<int:soustredeni>/obalky.pdf',
		staff_member_required(views.soustredeniObalkyView), name='seminar_soustredeni_obalky'),

	path('org/vloz_body/<int:tema>/',
		staff_member_required(views.VlozBodyView.as_view()),name='seminar_org_vlozbody'),
	# příprava na nestatický orgorozcestník
	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'),
	path('logout/', views.LogoutView.as_view(), name='logout'),
	path('resitel/', views.ResitelView.as_view(), name='seminar_resitel'),
	path('reset_password/', views.PasswordResetView.as_view(), name='reset_password'),
	path('change_password/', views.PasswordChangeView.as_view(), name='change_password'),
	path('reset_password_done/', views.PasswordResetDoneView.as_view(), name='reset_password_done'),
	path('reset_password_confirm/<uidb64>/<token>/', views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
	path('reset_password_complete/', views.PasswordResetCompleteView.as_view(), name='reset_password_complete'),
	path('resitel_edit', views.resitelEditView, name='seminar_resitel_edit'),

	# Autocomplete
	path('autocomplete/skola/',views.SkolaAutocomplete.as_view(), name='autocomplete_skola'),
	path('autocomplete/resitel/',views.ResitelAutocomplete.as_view(), name='autocomplete_resitel'),
	path('autocomplete/problem/odevzdatelny',views.OdevzdatelnyProblemAutocomplete.as_view(), name='autocomplete_problem_odevzdatelny'),

	path('temp/add_solution', views.AddSolutionView.as_view(),name='seminar_vloz_reseni'),
	path('temp/nahraj_reseni', views.NahrajReseniView.as_view(),name='seminar_nahraj_reseni'),

	path('', views.TitulniStranaView.as_view(), name='titulni_strana'),

	# Ceka na autocomplete v3
	# path('autocomplete/organizatori/',
	# staff_member_required(views.OrganizatorAutocomplete.as_view()),
	# name='seminar_autocomplete_organizator')


]