Merge branch 'data_migrations' of gimli.ms.mff.cuni.cz:/akce/mam/git/mamweb into data_migrations
This commit is contained in:
commit
113a59f4fe
3 changed files with 88 additions and 3 deletions
|
@ -28,6 +28,7 @@ from reversion import revisions as reversion
|
||||||
from seminar.utils import roman, FirstTagParser # Pro získání úryvku z TextNode
|
from seminar.utils import roman, FirstTagParser # Pro získání úryvku z TextNode
|
||||||
|
|
||||||
from unidecode import unidecode # Používám pro získání ID odkazu (ještě je to někde po někom zakomentované)
|
from unidecode import unidecode # Používám pro získání ID odkazu (ještě je to někde po někom zakomentované)
|
||||||
|
from seminar.treelib import safe_pred
|
||||||
|
|
||||||
from polymorphic.models import PolymorphicModel
|
from polymorphic.models import PolymorphicModel
|
||||||
|
|
||||||
|
@ -1343,7 +1344,7 @@ class MezicisloNode(TreeNode):
|
||||||
|
|
||||||
# TODO: Využít TreeLib
|
# TODO: Využít TreeLib
|
||||||
def aktualizuj_nazev(self):
|
def aktualizuj_nazev(self):
|
||||||
if self.prev:
|
if safe_pred(self) is not None:
|
||||||
if (self.prev.get_real_instance_class() != CisloNode and
|
if (self.prev.get_real_instance_class() != CisloNode and
|
||||||
self.prev.get_real_instance_class() != MezicisloNode):
|
self.prev.get_real_instance_class() != MezicisloNode):
|
||||||
raise ValueError("Předchůdce není číslo!")
|
raise ValueError("Předchůdce není číslo!")
|
||||||
|
|
|
@ -10,10 +10,11 @@ import unidecode
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Nastaveni, Soustredeni, Soustredeni_Ucastnici, Soustredeni_Organizatori, Osoba, Organizator, Prijemce, Tema, Uloha, Konfera, TextNode, UlohaVzorakNode, RocnikNode, CisloNode, TemaVCisleNode, Text, Hodnoceni, UlohaZadaniNode, Novinky, TreeNode
|
from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Nastaveni, Soustredeni, Soustredeni_Ucastnici, Soustredeni_Organizatori, Osoba, Organizator, Prijemce, Tema, Uloha, Konfera, TextNode, UlohaVzorakNode, RocnikNode, CisloNode, TemaVCisleNode, Text, Hodnoceni, UlohaZadaniNode, Novinky, TreeNode
|
||||||
|
import seminar.models as m
|
||||||
|
|
||||||
from django.contrib.flatpages.models import FlatPage
|
from django.contrib.flatpages.models import FlatPage
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
from seminar.treelib import all_children, insert_last_child, all_children_of_type
|
from seminar.treelib import all_children, insert_last_child, all_children_of_type, create_node_after
|
||||||
|
|
||||||
|
|
||||||
User = django.contrib.auth.get_user_model()
|
User = django.contrib.auth.get_user_model()
|
||||||
|
@ -420,6 +421,85 @@ def gen_cisla(rnd, rocniky):
|
||||||
rocnik_cisla.append(cisla)
|
rocnik_cisla.append(cisla)
|
||||||
return rocnik_cisla
|
return rocnik_cisla
|
||||||
|
|
||||||
|
def add_first_child(node, child):
|
||||||
|
node.first_child = child
|
||||||
|
node.save()
|
||||||
|
return
|
||||||
|
|
||||||
|
def get_text():
|
||||||
|
odstavec = lorem.paragraph()
|
||||||
|
return Text.objects.create(na_web = odstavec, do_cisla = odstavec)
|
||||||
|
|
||||||
|
def gen_dlouhe_tema(rnd, organizatori, rocnik, nazev, obor, kod):
|
||||||
|
tema = Tema.objects.create(
|
||||||
|
nazev=nazev,
|
||||||
|
stav=Problem.STAV_ZADANY,
|
||||||
|
zamereni="M",
|
||||||
|
autor=rnd.choice(organizatori),
|
||||||
|
garant=rnd.choice(organizatori),
|
||||||
|
kod=str(kod),
|
||||||
|
tema_typ=rnd.choice(Tema.TEMA_CHOICES)[0],
|
||||||
|
rocnik=rocnik,
|
||||||
|
abstrakt = lorem.paragraph()
|
||||||
|
)
|
||||||
|
|
||||||
|
# Generování struktury k tématu
|
||||||
|
cisla = sorted(rocnik.cisla.all(), key=lambda cislo: cislo.poradi)
|
||||||
|
for cislo in cisla:
|
||||||
|
# Přidáme TemaVCisleNode do daného čísla
|
||||||
|
cislo_node = cislo.cislonode
|
||||||
|
tema_cislo_node = TemaVCisleNode.objects.create(tema = tema)
|
||||||
|
insert_last_child(cislo_node, tema_cislo_node)
|
||||||
|
|
||||||
|
# Přidávání obsahu do čísla
|
||||||
|
cast_node = m.CastNode.objects.create(nadpis = "Příspěvek k číslu {}".format(cislo.kod))
|
||||||
|
add_first_child(tema_cislo_node, cast_node)
|
||||||
|
|
||||||
|
text_node = TextNode.objects.create(text = get_text())
|
||||||
|
add_first_child(cast_node, text_node)
|
||||||
|
|
||||||
|
cast_node2 = m.CastNode.objects.create(nadpis = "První podproblém")
|
||||||
|
add_first_child(text_node, cast_node2)
|
||||||
|
|
||||||
|
text_node2 = TextNode.objects.create(text = get_text())
|
||||||
|
add_first_child(cast_node2, text_node2)
|
||||||
|
|
||||||
|
cast_node3 = m.CastNode.objects.create(nadpis = "Druhý podproblém")
|
||||||
|
add_first_child(text_node2, cast_node3)
|
||||||
|
|
||||||
|
text_node3 = TextNode.objects.create(text = get_text())
|
||||||
|
add_first_child(cast_node3, text_node3)
|
||||||
|
|
||||||
|
cast_node4 = m.CastNode.objects.create(nadpis = "Třetí podproblém")
|
||||||
|
add_first_child(text_node3, cast_node4)
|
||||||
|
|
||||||
|
text_node4 = TextNode.objects.create(text = get_text())
|
||||||
|
add_first_child(cast_node3, text_node4)
|
||||||
|
|
||||||
|
cast_node3a = m.CastNode.objects.create(nadpis = "Podproblém paralelní s "
|
||||||
|
"druhým podproblémem")
|
||||||
|
cast_node3.succ = cast_node3a
|
||||||
|
cast_node3.save()
|
||||||
|
|
||||||
|
text_node3a = TextNode.objects.create(text = get_text())
|
||||||
|
add_first_child(cast_node3a, text_node3a)
|
||||||
|
|
||||||
|
# Občas přidáme mezičíslo
|
||||||
|
if rnd.randint(1, 3) == 1:
|
||||||
|
create_node_after(cislo_node, m.MezicisloNode)
|
||||||
|
mezicislo_node = cislo_node.succ
|
||||||
|
|
||||||
|
cast_node_mezicislo = m.CastNode.objects.create(
|
||||||
|
nadpis = "Příspěvek k mezičíslu".format(cislo.kod))
|
||||||
|
add_first_child(mezicislo_node, cast_node_mezicislo)
|
||||||
|
|
||||||
|
odstavec = lorem.paragraph()
|
||||||
|
text_mezicislo = Text.objects.create(na_web = odstavec, do_cisla = odstavec)
|
||||||
|
text_node_mezicislo = TextNode.objects.create(text = text_mezicislo)
|
||||||
|
add_first_child(cast_node_mezicislo, text_node_mezicislo)
|
||||||
|
|
||||||
|
return tema
|
||||||
|
|
||||||
def gen_temata(rnd, rocniky, rocnik_cisla, organizatori):
|
def gen_temata(rnd, rocniky, rocnik_cisla, organizatori):
|
||||||
logger.info('Generuji témata...')
|
logger.info('Generuji témata...')
|
||||||
|
|
||||||
|
@ -666,6 +746,10 @@ def create_test_data(size = 6, rnd = None):
|
||||||
# rocnik_temata je pole polí trojic (první číslo :int, poslední číslo :int, téma:Tema), přičemž každé vnitřní pole odpovídá ročníku a FIXME: je to takhle fuj a když to někdo vidí poprvé, tak je z toho smutný, protože vůbec neví, co se děje a co má čekat.
|
# rocnik_temata je pole polí trojic (první číslo :int, poslední číslo :int, téma:Tema), přičemž každé vnitřní pole odpovídá ročníku a FIXME: je to takhle fuj a když to někdo vidí poprvé, tak je z toho smutný, protože vůbec neví, co se děje a co má čekat.
|
||||||
rocnik_temata = gen_temata(rnd, rocniky, rocnik_cisla, organizatori)
|
rocnik_temata = gen_temata(rnd, rocniky, rocnik_cisla, organizatori)
|
||||||
|
|
||||||
|
rocnik = Rocnik.objects.filter(rocnik = 23).first()
|
||||||
|
dlouhe_tema = gen_dlouhe_tema(rnd, organizatori, rocnik, "Strašně dlouhé téma",
|
||||||
|
"MFI", 8)
|
||||||
|
|
||||||
# generování úloh k tématům ve všech číslech
|
# generování úloh k tématům ve všech číslech
|
||||||
gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori)
|
gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori)
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ from django.db import transaction
|
||||||
import seminar.models as s
|
import seminar.models as s
|
||||||
from seminar.models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni, Organizator, Resitel, Novinky, Soustredeni_Ucastnici, Pohadka, Tema, Clanek, Osoba, Skola # Tohle je stare a chceme se toho zbavit. Pouzivejte s.ToCoChci
|
from seminar.models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni, Organizator, Resitel, Novinky, Soustredeni_Ucastnici, Pohadka, Tema, Clanek, Osoba, Skola # Tohle je stare a chceme se toho zbavit. Pouzivejte s.ToCoChci
|
||||||
#from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva
|
#from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva
|
||||||
from seminar import utils,treelib
|
from seminar import utils, treelib
|
||||||
from seminar.forms import PrihlaskaForm, LoginForm, ProfileEditForm
|
from seminar.forms import PrihlaskaForm, LoginForm, ProfileEditForm
|
||||||
import seminar.forms as f
|
import seminar.forms as f
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue