From 5c9718106250991e534c513e9fe79c6653bf6b34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kate=C5=99ina=20=C4=8C=C3=AD=C5=BEkov=C3=A1?= Date: Wed, 11 Mar 2020 22:17:57 +0100 Subject: [PATCH] =?UTF-8?q?zm=C4=9Bny=20pouze=20v=20koment=C3=A1=C5=99?= =?UTF-8?q?=C3=ADch,=20odkomentovan=C3=A1=20v=C4=9Bc=20v=20urls.py,=20kter?= =?UTF-8?q?=C3=A1=20nefunguje,=20ale=20nejde=20bez=20n=C3=AD=20testovat=20?= =?UTF-8?q?archiv?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/urls.py | 2 +- seminar/views.py | 64 +++++++++++++++++++++++++----------------------- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/seminar/urls.py b/seminar/urls.py index bc1c89a8..f9a62261 100644 --- a/seminar/urls.py +++ b/seminar/urls.py @@ -23,7 +23,7 @@ urlpatterns = [ path('archiv/temata/', views.ArchivTemataView.as_view()), path('rocnik//', views.RocnikView.as_view(), name='seminar_rocnik'), - #path('cislo/./', views.CisloView.as_view(), name='seminar_cislo'), + path('cislo/./', views.CisloView.as_view(), name='seminar_cislo'), # odkomentované jenom kvůli testování archivu path('problem//', views.ProblemView.as_view(), name='seminar_problem'), #path('problem/(?P\d+)/(?P\d+)/', views.PrispevekView.as_view(), name='seminar_problem_prispevek'), diff --git a/seminar/views.py b/seminar/views.py index e174ab28..3f15fa24 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -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):