Odstřel modelu TreeNode #67
Merged
zelvuska
merged 5 commits from odstrel_modelu_treenode
into master
2 months ago
22 changed files with 804 additions and 100 deletions
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 19:45 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('odevzdavatko', '0006_tvorba_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,20 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:44 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('treenode', '0001_odstrel_treenode_create'), |
|||
('odevzdavatko', '0007_odstrel_treenode_pre'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='reseni', |
|||
name='text_cely', |
|||
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='reseni_cely_set', to='treenode.reseninode', verbose_name='Plná verze textu řešení'), |
|||
), |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:52 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('odevzdavatko', '0008_odstrel_treenode_relink'), |
|||
('treenode', '0003_odstrel_treenode_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 19:45 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('personalni', '0015_tvorba_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:52 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('personalni', '0016_odstrel_treenode_pre'), |
|||
('treenode', '0003_odstrel_treenode_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,17 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 19:45 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0139_tvorba_post'), |
|||
('odevzdavatko', '0007_odstrel_treenode_pre'), |
|||
('personalni', '0016_odstrel_treenode_pre'), |
|||
('tvorba', '0004_odstrel_treenode_pre'), |
|||
('contenttypes', '0002_remove_content_type_name'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,69 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 19:56 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0140_odstrel_treenode_pre'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='castnode', |
|||
options={'managed': False, 'verbose_name': 'Část (Node)', 'verbose_name_plural': 'Části (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='cislonode', |
|||
options={'managed': False, 'verbose_name': 'Číslo (Node)', 'verbose_name_plural': 'Čísla (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='mezicislonode', |
|||
options={'managed': False, 'verbose_name': 'Mezičíslo (Node)', 'verbose_name_plural': 'Mezičísla (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='obrazek', |
|||
options={'managed': False, 'verbose_name': 'obrázek', 'verbose_name_plural': 'obrázky'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='orgtextnode', |
|||
options={'managed': False, 'verbose_name': 'Organizátorský článek (Node)', 'verbose_name_plural': 'Organizátorské články (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='pohadkanode', |
|||
options={'managed': False, 'verbose_name': 'Pohádka (Node)', 'verbose_name_plural': 'Pohádky (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='reseninode', |
|||
options={'managed': False, 'verbose_name': 'Otištěné řešení (Node)', 'verbose_name_plural': 'Otištěná řešení (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='rocniknode', |
|||
options={'managed': False, 'verbose_name': 'Ročník (Node)', 'verbose_name_plural': 'Ročníky (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='temavcislenode', |
|||
options={'managed': False, 'verbose_name': 'Téma v čísle (Node)', 'verbose_name_plural': 'Témata v čísle (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='text', |
|||
options={'managed': False, 'verbose_name': 'text', 'verbose_name_plural': 'texty'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='textnode', |
|||
options={'managed': False, 'verbose_name': 'Text (Node)', 'verbose_name_plural': 'Text (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='treenode', |
|||
options={'managed': False, 'verbose_name': 'TreeNode', 'verbose_name_plural': 'TreeNody'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='ulohavzoraknode', |
|||
options={'managed': False, 'verbose_name': 'Vzorák úlohy (Node)', 'verbose_name_plural': 'Vzoráky úloh (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='ulohazadaninode', |
|||
options={'managed': False, 'verbose_name': 'Zadání úlohy (Node)', 'verbose_name_plural': 'Zadání úloh (Node)'}, |
|||
), |
|||
] |
@ -0,0 +1,153 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:47 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0141_odstrel_treenode_unmanage'), |
|||
('odevzdavatko', '0008_odstrel_treenode_relink'), |
|||
('treenode', '0001_odstrel_treenode_create'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RemoveField( |
|||
model_name='cislonode', |
|||
name='cislo', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='cislonode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='mezicislonode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='obrazek', |
|||
name='text', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='orgtextnode', |
|||
name='organizator', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='orgtextnode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='pohadkanode', |
|||
name='pohadka', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='pohadkanode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='reseninode', |
|||
name='reseni', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='reseninode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='rocniknode', |
|||
name='rocnik', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='rocniknode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='temavcislenode', |
|||
name='tema', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='temavcislenode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='textnode', |
|||
name='text', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='textnode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='treenode', |
|||
name='first_child', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='treenode', |
|||
name='polymorphic_ctype', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='treenode', |
|||
name='root', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='treenode', |
|||
name='succ', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='ulohavzoraknode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='ulohavzoraknode', |
|||
name='uloha', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='ulohazadaninode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='ulohazadaninode', |
|||
name='uloha', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='CastNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='CisloNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='MezicisloNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Obrazek', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='OrgTextNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='PohadkaNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='ReseniNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='RocnikNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='TemaVCisleNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Text', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='TextNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='TreeNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='UlohaVzorakNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='UlohaZadaniNode', |
|||
), |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:52 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0142_odstrel_treenode_delete'), |
|||
('treenode', '0003_odstrel_treenode_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,43 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-03 01:55 |
|||
|
|||
from django.db import migrations |
|||
|
|||
# Myšlenka: Tahle migrace o sobě prohlašuje, že závisí na všem, co se do téhle chvíle stalo. To má dva důsledky: |
|||
# 1. V okamžiku, kdy tahle migrace proběhne, tak už máme model ve stavu který očekáváme. IOW slouží jako bariéra, za kterou nemůžou přetéct úpravy ostatních aplikací (hlavně těch našich) |
|||
# 2. Zároveň ale tvrdíme, že k tomu, aby tahle migrace proběhla, potřebujeme (potenciálně relativně staré) verze cizích aplikací, což způsobí uspořádání opačným směrem: DB změny cizích aplikací naopak proběhnou až po této migraci |
|||
# Vzhledem k tomu, že by i naše předchozí aplikace měly záviset na těchto změnách, tak tím efektivně vynucujeme zachování stavu pro ty mezilehlé migrace, které možná (chybou) nedokumentovaně spoléhají na to, jak vypadají cizí aplikace. |
|||
# Plán do budoucna: Jakmile tahle migrace proběhne na všech myslitelných databázích, můžeme její předchůdce prostě smazat a nahradit nějakou výrazně snazší sadou migrací, která jen vygeneruje správně tabulky a závislosti podle aktuálního modelu. |
|||
# - To se ve skutečnosti vesměs už stalo, v odstřelených aplikacích jsou modely stejně všechny „nové s daty spadlými z nebe“. Je moc pozdě v noci, ale myslím si, že prostě bude stačit smazat závislosti na migracích v `seminar`i a celou aplikaci `seminar` zrušit. (Největší problém je to při nasazování DB z nuly např. u generování testdat…) |
|||
# Je otázka, jestli tahle migrace nemá bydlet ve `various` či jinde, aby se dala smazat celá složka `seminar`. |
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('admin', '0003_logentry_add_action_flag_choices'), |
|||
('auth', '0012_alter_user_first_name_max_length'), |
|||
('authtoken', '0004_alter_tokenproxy_options'), |
|||
('contenttypes', '0002_remove_content_type_name'), |
|||
('flatpages', '0001_initial'), |
|||
('galerie', '0013_post_split_soustredeni'), |
|||
('header_fotky', '0001_initial'), |
|||
('korektury', '0024_vic_orgu_k_pdf'), |
|||
('novinky', '0004_alter_novinky_id'), |
|||
('odevzdavatko', '0009_odstrel_treenode_post'), |
|||
('personalni', '0017_odstrel_treenode_post'), |
|||
('prednasky', '0018_post_split_soustredeni'), |
|||
('reversion', '0002_add_index_on_version_for_content_type_and_db'), |
|||
('seminar', '0143_odstrel_treenode_post'), |
|||
('sessions', '0001_initial'), |
|||
('sifrovacka', '0006_personalni_post_migrate'), |
|||
('sites', '0002_alter_domain_unique'), |
|||
('sitetree', '0002_alter_treeitem_parent_alter_treeitem_tree'), |
|||
('soustredeni', '0010_tvorba_post'), |
|||
('taggit', '0006_rename_taggeditem_content_type_object_id_taggit_tagg_content_8fc721_idx'), |
|||
('treenode', '0003_odstrel_treenode_post'), |
|||
('tvorba', '0005_odstrel_treenode_post'), |
|||
('various', '0006_tvorba_post'), |
|||
('vyroci', '0001_initial'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -1,20 +0,0 @@ |
|||
from django.db import models |
|||
|
|||
from seminar.models import treenode as tm |
|||
from odevzdavatko.models import Reseni |
|||
|
|||
class ReseniNode(tm.TreeNode): |
|||
class Meta: |
|||
db_table = 'seminar_nodes_otistene_reseni' |
|||
verbose_name = 'Otištěné řešení (Node)' |
|||
verbose_name_plural = 'Otištěná řešení (Node)' |
|||
reseni = models.ForeignKey(Reseni, |
|||
on_delete=models.PROTECT, |
|||
verbose_name = 'reseni') |
|||
|
|||
def aktualizuj_nazev(self): |
|||
self.nazev = "ReseniNode: "+str(self.reseni) |
|||
|
|||
def getOdkazStr(self): |
|||
return str(self.reseni) |
|||
|
@ -1,69 +0,0 @@ |
|||
import logging |
|||
import os |
|||
from django.db import models |
|||
|
|||
from .base import SeminarModelBase |
|||
|
|||
logger = logging.getLogger(__name__) |
|||
|
|||
|
|||
class Text(SeminarModelBase): |
|||
class Meta: |
|||
db_table = 'seminar_texty' |
|||
verbose_name = 'text' |
|||
verbose_name_plural = 'texty' |
|||
|
|||
na_web = models.TextField( |
|||
'text na web', blank=True, |
|||
help_text='Text ke zveřejnění na webu') |
|||
|
|||
do_cisla = models.TextField( |
|||
'text do čísla', blank=True, |
|||
help_text='Text ke zveřejnění v čísle') |
|||
|
|||
# má OneToOneField s: |
|||
# Reseni (je u něj jako reseni_cele) |
|||
|
|||
# obrázky mají návaznost opačným směrem (vazba z druhé strany) |
|||
|
|||
def save(self, *args, **kwargs): |
|||
super().save(*args, **kwargs) |
|||
# *Node.save() aktualizuje název *Nodu. |
|||
for tn in self.textnode_set.all(): |
|||
tn.save() |
|||
|
|||
def __str__(self): |
|||
return str(self.na_web)[:20] |
|||
|
|||
|
|||
class Obrazek(SeminarModelBase): |
|||
class Meta: |
|||
db_table = 'seminar_obrazky' |
|||
verbose_name = 'obrázek' |
|||
verbose_name_plural = 'obrázky' |
|||
|
|||
# Interní ID |
|||
id = models.AutoField(primary_key=True) |
|||
|
|||
na_web = models.ImageField( |
|||
'obrázek na web', upload_to='obrazky/%Y/%m/%d/', |
|||
null=True, blank=True) |
|||
|
|||
text = models.ForeignKey( |
|||
Text, verbose_name='text', |
|||
help_text='text, ve kterém se obrázek vyskytuje', |
|||
null=False, blank=False, on_delete=models.CASCADE) |
|||
|
|||
do_cisla_barevny = models.FileField( |
|||
'barevný obrázek do čísla', |
|||
help_text='Barevná verze obrázku do čísla', |
|||
upload_to='obrazky/%Y/%m/%d/', blank=True, null=True) |
|||
|
|||
do_cisla_cernobily = models.FileField( |
|||
'černobílý obrázek do čísla', |
|||
help_text='Černobílá verze obrázku do čísla', |
|||
upload_to='obrazky/%Y/%m/%d/', blank=True, null=True) |
|||
|
|||
# TODO placement hint - chci ho tady / pred textem / za textem |
|||
|
|||
|
@ -0,0 +1,231 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:06 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
def nastav_nove_contenttypes(apps, schema_editor): |
|||
ContentType = apps.get_model('contenttypes', 'ContentType') |
|||
# Seznam níž ověřen tím, že se skutečně při téhle migraci tabulka `django_content_type` (lokální v SQLite) změní správně :-) |
|||
for m in ('ulohavzoraknode', 'ulohazadaninode', 'cislonode', 'temavcislenode', 'orgtextnode', 'obrazek', 'rocniknode', 'pohadkanode', 'textnode', 'mezicislonode', 'reseninode', 'castnode', 'text', 'treenode'): |
|||
ContentType.objects.filter(app_label='seminar', model=m).update(app_label='treenode') |
|||
|
|||
def nastav_stare_contenttypes(apps, schema_editor): |
|||
ContentType = apps.get_model('contenttypes', 'ContentType') |
|||
for m in ('ulohavzoraknode', 'ulohazadaninode', 'cislonode', 'temavcislenode', 'orgtextnode', 'obrazek', 'rocniknode', 'pohadkanode', 'textnode', 'mezicislonode', 'reseninode', 'castnode', 'text', 'treenode'): |
|||
ContentType.objects.filter(app_label='treenode', model=m).update(app_label='seminar') |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
initial = True |
|||
|
|||
dependencies = [ |
|||
('seminar', '0141_odstrel_treenode_unmanage'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='Obrazek', |
|||
fields=[ |
|||
('id', models.AutoField(primary_key=True, serialize=False)), |
|||
('na_web', models.ImageField(blank=True, null=True, upload_to='obrazky/%Y/%m/%d/', verbose_name='obrázek na web')), |
|||
('do_cisla_barevny', models.FileField(blank=True, help_text='Barevná verze obrázku do čísla', null=True, upload_to='obrazky/%Y/%m/%d/', verbose_name='barevný obrázek do čísla')), |
|||
('do_cisla_cernobily', models.FileField(blank=True, help_text='Černobílá verze obrázku do čísla', null=True, upload_to='obrazky/%Y/%m/%d/', verbose_name='černobílý obrázek do čísla')), |
|||
('text', models.ForeignKey(help_text='text, ve kterém se obrázek vyskytuje', on_delete=django.db.models.deletion.CASCADE, to='treenode.text', verbose_name='text')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'obrázek', |
|||
'verbose_name_plural': 'obrázky', |
|||
'db_table': 'seminar_obrazky', |
|||
'managed': False, |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='Text', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('na_web', models.TextField(blank=True, help_text='Text ke zveřejnění na webu', verbose_name='text na web')), |
|||
('do_cisla', models.TextField(blank=True, help_text='Text ke zveřejnění v čísle', verbose_name='text do čísla')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'text', |
|||
'verbose_name_plural': 'texty', |
|||
'db_table': 'seminar_texty', |
|||
'managed': False, |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='TreeNode', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('nazev', models.TextField(help_text='Tento název se zobrazuje v nabídkách pro výběr vhodného TreeNode', null=True, verbose_name='název tohoto node')), |
|||
('zajimave', models.BooleanField(default=False, help_text='Zobrazí se daná věc na rozcestníku témátek', verbose_name='Zajímavé')), |
|||
('srolovatelne', models.BooleanField(blank=True, help_text='Bude na stránce témátka možnost tuto položku skrýt', null=True, verbose_name='Srolovatelné')), |
|||
('first_child', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='father_of_first', to='treenode.treenode', verbose_name='první potomek')), |
|||
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_%(app_label)s.%(class)s_set+', to='contenttypes.contenttype')), |
|||
('root', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='potomci_set', to='treenode.treenode', verbose_name='kořen stromu')), |
|||
('succ', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prev', to='treenode.treenode', verbose_name='další element na stejné úrovni')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'TreeNode', |
|||
'verbose_name_plural': 'TreeNody', |
|||
'db_table': 'seminar_nodes_treenode', |
|||
'managed': False, |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='CastNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
('nadpis', models.CharField(help_text='Nadpis podvěšené části obsahu', max_length=100, verbose_name='Nadpis')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Část (Node)', |
|||
'verbose_name_plural': 'Části (Node)', |
|||
'db_table': 'seminar_nodes_cast', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='CisloNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
('cislo', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='tvorba.cislo', verbose_name='číslo')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Číslo (Node)', |
|||
'verbose_name_plural': 'Čísla (Node)', |
|||
'db_table': 'seminar_nodes_cislo', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='MezicisloNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Mezičíslo (Node)', |
|||
'verbose_name_plural': 'Mezičísla (Node)', |
|||
'db_table': 'seminar_nodes_mezicislo', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='OrgTextNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
('org_verejny', models.BooleanField(default=True, help_text='Pokud ano, bude org pod článkem podepsaný', verbose_name='Org je veřejný?')), |
|||
('organizator', models.ForeignKey( on_delete=django.db.models.deletion.DO_NOTHING, to='personalni.organizator', verbose_name='Organizátor')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Organizátorský článek (Node)', |
|||
'verbose_name_plural': 'Organizátorské články (Node)', |
|||
'db_table': 'seminar_nodes_orgtextnode', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='PohadkaNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
('pohadka', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='tvorba.pohadka', verbose_name='pohádka')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Pohádka (Node)', |
|||
'verbose_name_plural': 'Pohádky (Node)', |
|||
'db_table': 'seminar_nodes_pohadka', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='ReseniNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
('reseni', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='odevzdavatko.reseni', verbose_name='reseni')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Otištěné řešení (Node)', |
|||
'verbose_name_plural': 'Otištěná řešení (Node)', |
|||
'db_table': 'seminar_nodes_otistene_reseni', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='RocnikNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
('rocnik', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='tvorba.rocnik', verbose_name='ročník')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Ročník (Node)', |
|||
'verbose_name_plural': 'Ročníky (Node)', |
|||
'db_table': 'seminar_nodes_rocnik', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='TemaVCisleNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
('tema', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='tvorba.tema', verbose_name='téma v čísle')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Téma v čísle (Node)', |
|||
'verbose_name_plural': 'Témata v čísle (Node)', |
|||
'db_table': 'seminar_nodes_temavcisle', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='TextNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
('text', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='treenode.text', verbose_name='text')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Text (Node)', |
|||
'verbose_name_plural': 'Text (Node)', |
|||
'db_table': 'seminar_nodes_obsah', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='UlohaVzorakNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
('uloha', models.OneToOneField(null=True, on_delete=django.db.models.deletion.PROTECT, to='tvorba.uloha', verbose_name='úloha')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Vzorák úlohy (Node)', |
|||
'verbose_name_plural': 'Vzoráky úloh (Node)', |
|||
'db_table': 'seminar_nodes_uloha_vzorak', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='UlohaZadaniNode', |
|||
fields=[ |
|||
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='treenode.treenode')), |
|||
('uloha', models.OneToOneField(null=True, on_delete=django.db.models.deletion.PROTECT, to='tvorba.uloha', verbose_name='úloha')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Zadání úlohy (Node)', |
|||
'verbose_name_plural': 'Zadání úloh (Node)', |
|||
'db_table': 'seminar_nodes_uloha_zadani', |
|||
'managed': False, |
|||
}, |
|||
bases=('treenode.treenode',), |
|||
), |
|||
migrations.RunPython(nastav_nove_contenttypes, nastav_stare_contenttypes), |
|||
] |
@ -0,0 +1,70 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:50 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('treenode', '0001_odstrel_treenode_create'), |
|||
('seminar', '0142_odstrel_treenode_delete'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='castnode', |
|||
options={'verbose_name': 'Část (Node)', 'verbose_name_plural': 'Části (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='cislonode', |
|||
options={'verbose_name': 'Číslo (Node)', 'verbose_name_plural': 'Čísla (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='mezicislonode', |
|||
options={'verbose_name': 'Mezičíslo (Node)', 'verbose_name_plural': 'Mezičísla (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='obrazek', |
|||
options={'verbose_name': 'obrázek', 'verbose_name_plural': 'obrázky'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='orgtextnode', |
|||
options={'verbose_name': 'Organizátorský článek (Node)', 'verbose_name_plural': 'Organizátorské články (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='pohadkanode', |
|||
options={'verbose_name': 'Pohádka (Node)', 'verbose_name_plural': 'Pohádky (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='reseninode', |
|||
options={'verbose_name': 'Otištěné řešení (Node)', 'verbose_name_plural': 'Otištěná řešení (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='rocniknode', |
|||
options={'verbose_name': 'Ročník (Node)', 'verbose_name_plural': 'Ročníky (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='temavcislenode', |
|||
options={'verbose_name': 'Téma v čísle (Node)', 'verbose_name_plural': 'Témata v čísle (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='text', |
|||
options={'verbose_name': 'text', 'verbose_name_plural': 'texty'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='textnode', |
|||
options={'verbose_name': 'Text (Node)', 'verbose_name_plural': 'Text (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='treenode', |
|||
options={'verbose_name': 'TreeNode', 'verbose_name_plural': 'TreeNody'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='ulohavzoraknode', |
|||
options={'verbose_name': 'Vzorák úlohy (Node)', 'verbose_name_plural': 'Vzoráky úloh (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='ulohazadaninode', |
|||
options={'verbose_name': 'Zadání úlohy (Node)', 'verbose_name_plural': 'Zadání úloh (Node)'}, |
|||
), |
|||
] |
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:52 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('treenode', '0002_odstrel_treenode_manage'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 19:45 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('tvorba', '0003_tvorba_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:52 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('tvorba', '0004_odstrel_treenode_pre'), |
|||
('treenode', '0003_odstrel_treenode_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
Loading…
Reference in new issue