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 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 | ||||
| 
 | ||||
|  | @ -1343,7 +1344,7 @@ class MezicisloNode(TreeNode): | |||
| 
 | ||||
| 	# TODO: Využít TreeLib | ||||
| 	def aktualizuj_nazev(self): | ||||
| 		if self.prev: | ||||
| 		if safe_pred(self) is not None: | ||||
| 			if (self.prev.get_real_instance_class() != CisloNode and | ||||
| 				self.prev.get_real_instance_class() != MezicisloNode): | ||||
| 					raise ValueError("Předchůdce není číslo!") | ||||
|  |  | |||
|  | @ -10,10 +10,11 @@ import unidecode | |||
| 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 | ||||
| import seminar.models as m | ||||
| 
 | ||||
| from django.contrib.flatpages.models import FlatPage | ||||
| 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() | ||||
|  | @ -420,6 +421,85 @@ def gen_cisla(rnd, rocniky): | |||
| 		rocnik_cisla.append(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): | ||||
| 	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 = 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 | ||||
| 	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 | ||||
| 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 seminar import utils,treelib | ||||
| from seminar import utils, treelib | ||||
| from seminar.forms import PrihlaskaForm, LoginForm, ProfileEditForm | ||||
| import seminar.forms as f | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Pavel 'LEdoian' Turinsky
						Pavel 'LEdoian' Turinsky