změny pouze v komentářích, odkomentovaná věc v urls.py, která nefunguje, ale nejde bez ní testovat archiv
This commit is contained in:
		
							parent
							
								
									efc76c7153
								
							
						
					
					
						commit
						5c97181062
					
				
					 2 changed files with 34 additions and 32 deletions
				
			
		|  | @ -23,7 +23,7 @@ urlpatterns = [ | |||
| 	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'), | ||||
| 	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('problem/(?P<pk>\d+)/(?P<prispevek>\d+)/', views.PrispevekView.as_view(), name='seminar_problem_prispevek'), | ||||
| 
 | ||||
|  |  | |||
|  | @ -62,7 +62,7 @@ class VlozBodyView(generic.ListView): | |||
| 		print(self.tema) | ||||
| 		self.problemy = Problem.objects.filter(nadproblem = self.tema) | ||||
| 		print(self.problemy) | ||||
| 		self.reseni = Reseni.objects.filter(problem__in=self.problemy)	 | ||||
| 		self.reseni = Reseni.objects.filter(problem__in=self.problemy) | ||||
| 		print(self.reseni) | ||||
| 		return self.reseni | ||||
| 
 | ||||
|  | @ -81,7 +81,7 @@ class ObalkovaniView(generic.ListView): | |||
| 	def get_context_data(self, **kwargs): | ||||
| 		context = super(ObalkovaniView, self).get_context_data(**kwargs) | ||||
| 		print(self.cislo) | ||||
| 		context['cislo'] = self.cislo  | ||||
| 		context['cislo'] = self.cislo | ||||
| 		return context | ||||
| 
 | ||||
| 
 | ||||
|  | @ -130,8 +130,8 @@ def vytahniZLesaSeznam(tematko, koren, pouze_zajimave=False): | |||
| 			stack.append((wn.succ, wd, wr)) | ||||
| 		if isinstance(wn, s.TemaVCisleNode): | ||||
| 			print("TEMA") | ||||
| 			print(wn.tema.id)	 | ||||
| 			print(tematko.id)	 | ||||
| 			print(wn.tema.id) | ||||
| 			print(tematko.id) | ||||
| 			if wn.tema.id == tematko.id: | ||||
| 				returnVal.append((posledni_cislo, 0)) | ||||
| 				print("PRIDANO") | ||||
|  | @ -144,7 +144,7 @@ def vytahniZLesaSeznam(tematko, koren, pouze_zajimave=False): | |||
| 			tagClose = s.Text(na_web = "Zavírací srolovací tag") | ||||
| 			tagCloseNode = s.TextNode(text = tagClose) | ||||
| 			stack.append((tagCloseNode, wd, True)) | ||||
| 			 | ||||
| 
 | ||||
| 		if wn.first_child != None: | ||||
| 			stack.append((wn.first_child, wd + 1, wr)) | ||||
| 
 | ||||
|  | @ -152,14 +152,14 @@ def vytahniZLesaSeznam(tematko, koren, pouze_zajimave=False): | |||
| 			posledni_cislo = wn | ||||
| 		print(wn) | ||||
| 
 | ||||
| 		if wr:						 | ||||
| 		if wr: | ||||
| 			print("ZAJIMAVE") | ||||
| 			if pouze_zajimave: | ||||
| 				if not wn.zajimave: | ||||
| 					continue | ||||
| 			returnVal.append((wn, wd)) | ||||
| 	return returnVal | ||||
|    | ||||
| 
 | ||||
| def TematkoView(request, rocnik, tematko): | ||||
| 	nastaveni = s.Nastaveni.objects.first() | ||||
| 	rocnik_object = s.Rocnik.objects.filter(rocnik=rocnik) | ||||
|  | @ -172,7 +172,7 @@ def TematkoView(request, rocnik, tematko): | |||
| 			pass | ||||
| 
 | ||||
| 	return render(request, 'seminar/tematka/toaletak.html', {}) | ||||
| 	 | ||||
| 
 | ||||
| 
 | ||||
| def TemataRozcestnikView(request): | ||||
| 	print("=============================================") | ||||
|  | @ -198,17 +198,17 @@ def TemataRozcestnikView(request): | |||
| 				vcisle.append((odkaz[0].getOdkazStr(), odkaz[0].getOdkaz())) | ||||
| 		if cislo != None: | ||||
| 			cisla.append((cislo, vcisle)) | ||||
| 				 | ||||
| 
 | ||||
| 		print(cisla) | ||||
| 		tematka.append({ | ||||
| 			"kod" : tematko_object.kod, | ||||
| 			"nazev" : tematko_object.nazev, | ||||
| 			"abstrakt" : tematko_object.abstrakt,  | ||||
| 			"abstrakt" : tematko_object.abstrakt, | ||||
| 			"obrazek": tematko_object.obrazek, | ||||
| 			"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) | ||||
|  | @ -311,7 +311,6 @@ class CojemamOrganizatoriStariView(generic.ListView): | |||
| 
 | ||||
| ### Archiv | ||||
| 
 | ||||
| 
 | ||||
| class ArchivView(generic.ListView): | ||||
| 	model = Rocnik | ||||
| 	template_name='seminar/archiv/cisla.html' | ||||
|  | @ -322,13 +321,16 @@ class ArchivView(generic.ListView): | |||
| 		vyska = 297  # px | ||||
| 		sirka = 210  # px | ||||
| 
 | ||||
| 		# nejnovějších 10 zveřejněných čísel | ||||
| 		cisla = Cislo.objects.filter(verejne_db=True)[:10] | ||||
| 
 | ||||
| 		# op = os.path, udělá z argumentů cestu | ||||
| 		png_dir = op.join(settings.MEDIA_ROOT, "cislo", "png") | ||||
| 
 | ||||
| 		# seznam [(url obrázku, číslo)] | ||||
| 		urls = [] | ||||
| 
 | ||||
| 		# c je číslo, i je pořadí čísla | ||||
| 		for i, c in enumerate(cisla): | ||||
| 			if not c.pdf: | ||||
| 				continue | ||||
|  | @ -420,7 +422,7 @@ def sloupec_s_poradim(seznam_s_body): | |||
| 			sloupec_s_poradim.append("{}.".format(aktualni_poradi)) | ||||
| 		# pokud je skupina větší, vypíšu rozsah | ||||
| 		else: | ||||
| 			sloupec_s_poradim.append("{}.–{}.".format(aktualni_poradi,  | ||||
| 			sloupec_s_poradim.append("{}.–{}.".format(aktualni_poradi, | ||||
| 						aktualni_poradi+velikost_skupiny-1)) | ||||
| 		# zvětšíme aktuální pořadí o tolik, kolik pozic bylo přeskočeno | ||||
| 		aktualni_poradi = aktualni_poradi + velikost_skupiny | ||||
|  | @ -428,9 +430,9 @@ def sloupec_s_poradim(seznam_s_body): | |||
| 
 | ||||
| # spočítá součet bodů získaných daným řešitelem za zadaný problém a všechny jeho podproblémy | ||||
| def __soucet_resitele_problemu(problem, resitel, cislo, soucet): | ||||
| 	# sečteme body za daný problém přes všechna řešení daného problému  | ||||
| 	# sečteme body za daný problém přes všechna řešení daného problému | ||||
| 	# od daného řešitele | ||||
| 	reseni_resitele = problem.hodnoceni_set.filter(reseni__resitele=resitel,  | ||||
| 	reseni_resitele = problem.hodnoceni_set.filter(reseni__resitele=resitel, | ||||
| 				cislo_body=cislo) | ||||
| 	# XXX chyba na řádku výše - řešení může mít více řešitelů, asi chceme contains | ||||
| 	# nebo in | ||||
|  | @ -438,7 +440,7 @@ def __soucet_resitele_problemu(problem, resitel, cislo, soucet): | |||
| 		soucet += r.body | ||||
| 
 | ||||
| 	# a přičteme k tomu hodnocení všech podproblémů | ||||
| 	for p in problem.podproblem.all():  | ||||
| 	for p in problem.podproblem.all(): | ||||
| 	# i přes jméno by to měla být množina jeho podproblémů | ||||
| 		soucet += __soucet_resitele_problemu(p, resitel, soucet) | ||||
| 	return soucet | ||||
|  | @ -451,25 +453,25 @@ def body_resitele_problemu_v_cisle(problem, resitel, cislo): | |||
| # vrátí list všech problémů s body v daném čísle, které již nemají nadproblém | ||||
| def hlavni_problemy_cisla(cislo): | ||||
| 	hodnoceni = cislo.hodnoceni.select_related('problem', 'reseni').all()	# hodnocení, která se vážou k danému číslu | ||||
| 	 | ||||
| 
 | ||||
| 	reseni = [h.reseni for h in hodnoceni] | ||||
| 	problemy = [h.problem for h in hodnoceni] | ||||
| 	problemy_set = set(problemy)	# chceme každý problém unikátně, | ||||
| 	problemy = (list(problemy_set)) # převedení na množinu a zpět to zaručí | ||||
| 
 | ||||
| 	# hlavní problémy čísla  | ||||
| 	# hlavní problémy čísla | ||||
| 	# (mají vlastní sloupeček ve výsledkovce, nemají nadproblém) | ||||
| 	hlavni_problemy = [] | ||||
| 	for p in problemy: | ||||
| 		while not(p.nadproblem == None): | ||||
| 			p = p.nadproblem | ||||
| 		hlavni_problemy.append(p) | ||||
| 		 | ||||
| 
 | ||||
| 	# zunikátnění | ||||
| 	hlavni_problemy_set = set(hlavni_problemy) | ||||
| 	hlavni_problemy = list(hlavni_problemy_set) | ||||
| 	hlavni_problemy.sort(key=lambda k: k.kod_v_rocniku()) # setřídit podle t1, t2, c3, ... | ||||
| 	 | ||||
| 
 | ||||
| 	return hlavni_problemy | ||||
| 
 | ||||
| def body_resitele_odjakziva(resitel): | ||||
|  | @ -495,7 +497,7 @@ def body_resitele_v_cisle(resitel, cislo): | |||
| def body_resitele_v_rocniku(resitel, rocnik, do_cisla=None): | ||||
| 	# pokud do_cisla=None, tak do posledního čísla v ročníku | ||||
| 	# do_cisla je objekt Cislo | ||||
| 	cisla = rocnik.cisla.all() # funkce vrátí pole objektů  | ||||
| 	cisla = rocnik.cisla.all() # funkce vrátí pole objektů | ||||
| 	# Cislo už lexikograficky setřízené, viz models | ||||
| 	body = 0 | ||||
| 	for cislo in cisla: | ||||
|  | @ -671,7 +673,7 @@ class CisloView(generic.DetailView): | |||
| 		# generujeme sloupec s pořadím pomocí stejně zvané funkce | ||||
| 		pocty_bodu = [rv.body_rocnik for rv in radky_vysledkovky] | ||||
| 		sloupec_poradi = sloupec_s_poradim(pocty_bodu) | ||||
| 		 | ||||
| 
 | ||||
| 		# každému řádku výsledkovky přidáme jeho pořadí | ||||
| 		i = 0 | ||||
| 		for rv in radky_vysledkovky: | ||||
|  | @ -680,7 +682,7 @@ class CisloView(generic.DetailView): | |||
| 
 | ||||
| 		# vytahané informace předáváme do kontextu | ||||
| 		context['cislo'] = cislo | ||||
| 		context['radky_vysledkovky'] = radky_vysledkovky	 | ||||
| 		context['radky_vysledkovky'] = radky_vysledkovky | ||||
| 		context['problemy'] = hlavni_problemy | ||||
| #		context['v_cisle_zadane'] = TODO | ||||
| #		context['resene_problemy'] = resene_problemy | ||||
|  | @ -1164,7 +1166,7 @@ def loginView(request): | |||
| 	if request.method == 'POST': | ||||
| 		form = LoginForm(request.POST) | ||||
| 		if form.is_valid(): | ||||
| 			user = authenticate(request,  | ||||
| 			user = authenticate(request, | ||||
| 				username=form.cleaned_data['username'], | ||||
| 				password=form.cleaned_data['password']) | ||||
| 			print(form.cleaned_data) | ||||
|  | @ -1172,8 +1174,8 @@ def loginView(request): | |||
| 				login(request,user) | ||||
| 				return HttpResponseRedirect('/') | ||||
| 			else: | ||||
| 				return render(request,  | ||||
| 					'seminar/login.html',  | ||||
| 				return render(request, | ||||
| 					'seminar/login.html', | ||||
| 					{'form': form, 'login_error': 'Neplatné jméno nebo heslo'}) | ||||
| 
 | ||||
| 	else: | ||||
|  | @ -1191,7 +1193,7 @@ def logoutView(request): | |||
| def prihlaska_log_gdpr_safe(logger, gdpr_logger, msg, form_data): | ||||
| 	msg = "{}, form_hash:{}".format(msg,hash(form_data)) | ||||
| 	logger.warn(msg) | ||||
| 	gdpr_logger.warn(msg+", form:{}".format(form_data))		 | ||||
| 	gdpr_logger.warn(msg+", form:{}".format(form_data)) | ||||
| 
 | ||||
| from django.forms.models import model_to_dict | ||||
| def resitelEditView(request): | ||||
|  | @ -1201,7 +1203,7 @@ def resitelEditView(request): | |||
|     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ář  | ||||
|     ## 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) | ||||
|  | @ -1259,7 +1261,7 @@ def prihlaskaView(request): | |||
| 			fcd = form.cleaned_data | ||||
| 			form_hash = hash(fcd) | ||||
| 			form_logger.info(fcd,form_hash=form_hash) | ||||
| 			 | ||||
| 
 | ||||
| 			with transaction.atomic(): | ||||
| 				u = User.objects.create_user( | ||||
| 					username=fcd['username'], | ||||
|  | @ -1298,7 +1300,7 @@ def prihlaskaView(request): | |||
| 					rok_maturity = fcd['rok_maturity'], | ||||
| 					zasilat = fcd['zasilat'] | ||||
| 					) | ||||
| 				 | ||||
| 
 | ||||
| 				r.save() | ||||
| 				r.osoba = o | ||||
| 				if fcd.get('skola'): | ||||
|  | @ -1328,7 +1330,7 @@ class SkolaAutocomplete(autocomplete.Select2QuerySetView): | |||
| 				Q(kratky_nazev__istartswith=self.q)| | ||||
| 				Q(ulice__istartswith=self.q)| | ||||
| 				Q(mesto__istartswith=self.q)) | ||||
| 		 | ||||
| 
 | ||||
| 		return qs | ||||
| 
 | ||||
| class LoginRequiredAjaxMixin(object): | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Kateřina Čížková
						Kateřina Čížková