diff --git a/seminar/testutils.py b/seminar/testutils.py index eb993c7f..e2ffc0ac 100644 --- a/seminar/testutils.py +++ b/seminar/testutils.py @@ -232,6 +232,7 @@ def gen_rocniky(last_rocnik, size): def gen_cisla(rocniky): slovnik_rocnik_cisla = {} for rocnik in rocniky: + otec = True slovnik_cisel = {} cisel = rnd.randint(4, 8) node = None @@ -261,6 +262,10 @@ def gen_cisla(rocniky): ) node2 = CisloNode.objects.create(cislo = cislo, succ = node) node = node2 + if otec: + otec = False + rocnik.RocnikNode.first_child = node + rocnik.save() slovnik_cisel[ci] = cislo slovnik_rocnik_cisla[rocnik] = slovnik_cisel @@ -268,17 +273,19 @@ def gen_cisla(rocniky): def gen_temata(rocniky, slovnik_rocnik_cisla): slovnik_rocnik_temata = {} - for rocnik in rocniky: - temata = {} - for cislo in slovnik_r[rocnik] - if cislo <= 3: - jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální", + jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální", "Šokující", "Magnetické", "Modré", "Překvapivé", "Plasmatické", "Novoroční"] - co = ["téma", "záření", "stavení", "jiskření", "jelito", - "drama", "kuře", "moře", "klání", "proudění", "čekání"] - poc_oboru = rnd.randint(1, 2) - poc_op = rnd.randint(1, 3) + co = ["téma", "záření", "stavení", "jiskření", "jelito", + "drama", "kuře", "moře", "klání", "proudění", "čekání"] + poc_oboru = rnd.randint(1, 2) + poc_op = rnd.randint(1, 3) + n = 1 + for rocnik in rocniky: + temata = {} + slovnik_cisel = slovnik_rocnik_cisla[rocnik] + for cislo in slovnik_cisel + if cislo.cislo <= 3: t = Tema.objects.create( # atributy třídy Problem nazev=" ".join([rnd.choice(jake), rnd.choice(co)]), @@ -286,42 +293,72 @@ def gen_temata(rocniky, slovnik_rocnik_cisla): zamereni=rnd.sample(["M", "F", "I", "O", "B"], poc_oboru), autor=rnd.choice(organizatori), garant=rnd.choice(organizatori), - # FIXME: téma má kód podle čísla, až jich bude - # více, tak udělat kód podle pořadí vygenerování - kod=str(cislo), + kod=str(n), # atributy třídy Téma tema_typ=rnd.choice(Tema.TEMA_CHOICES), - rocnik=rocnik) + rocnik=rocnik + ) + n+=1 + konec_tematu = rnd.randint(cislo.cislo, 7) + for i in range(cislo.cislo, min(konec_tematu, len(slovnik_cisel))): + node = TemaVCisleNode.objects.create(tema = t) + otec = slovnik_cisel[i].CisloNode + bratr = otec.first_child + node.succ = bratr + otec.first_child = node + node.save() + otec.save() t.opravovatele=rnd.sample(organizatori, poc_op) t.save() temata[cislo] = t slovnik_rocnik_temata[tema] = temata -def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): + +def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): #Tahle funkce je nedodělaná + # ulohy resene v cisle + jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá", + "Zákeřná", "Fyzikální"] + co = ["kostka", "smršť", "díra", "zrada", "toulka", "tyč", + "úloha", "blecha"] + sloveso = ["Najděte", "Spočítejte", "Zapište", "Změřte", "Odhadněte"] + koho = ["délku", "počet", "množství", "dílky"] + ceho = ["všech", "správných", "konstatních", "zelených"] + jmeno = ["řešení", "tahů", "čísel", "kalhot", "koulí", "hadů"] + kde = ["na zemi", "ve vesmíru", "ve vzduchu", "na šňůře", "v letadle"] + obor = ["M", "F", "I", "O", "B"] + reseni = ["to je přece jasné", "triviální", "omlouváme se," + "otevřený problém", "neřešitelné", "triviálně triviální", + "použitím věty z prvního semestru na matfyzu", + "jednoduše pomocí látky z druhého semestru na matfyzu", + "netriviální aplikace diferenciálních rovnic", "zadání je vnitřně" + "sporné", "nepopsatelně jednoduché", "pokud jste na to nepřišli," + "tak jste fakt hloupí"] for rocnik in rocniky: slovnik_cisel = slovnik_rocnik_cisla[rocnik] - cisel = len(slovnik_cisel) slovnik_temat = slovnik_rocnik_temata[rocnik] - for tema in slovnik_temat: - for i in range(tema. - if #TODO + for cislo in slovnik_cisel: + syn = cislo.CisloNode.first_child + while syn != None: + tema = syn.tema + for i in range(1, rnd.randint(1, 4)) poc_op = rnd.randint(1, 4) poc_oboru = rnd.randint(1, 2) p = Uloha.objects.create( nazev=": ".join([tema.nazev, - "úloha {}.".format(i-ci+1)]), + "úloha {}.".format(i)]), nadproblem=tema, stav=Problem.STAV_ZADANY, - zamereni=t.zamereni, - autor=t.autor, - garant=t.garant, + zamereni=tema.zamereni, + autor=tema.autor, + garant=tema.garant, opravovatele=rnd.sample(organizatori, poc_op), kod=str(i), - cislo_zadani=slovnik_cisel[ci], - cislo_reseni=slovnik_cisel[ci+2], - cislo_deadline=slovnik_cisel[ci+2], - max_body = rnd.randint(1, 8)) + cislo_zadani=cislo, + cislo_reseni=slovnik_cisel[cislo.cislo+2], + cislo_deadline=slovnik_cisel[cislo.cislo+2], + max_body = rnd.randint(1, 8) + ) p.zadani = " ".join([rnd.choice(sloveso), rnd.choice(koho), rnd.choice(ceho), rnd.choice(jmeno), rnd.choice(kde)]) @@ -338,6 +375,9 @@ def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): p.save() + syn = syn.succ + + # vytvor text # vytvor TemaVCisleNode if (rnd.randint(1, 3) % 3 == 0):