197 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Generated by Django 4.2.16 on 2024-10-30 11:37
 | |
| 
 | |
| import datetime
 | |
| from django.db import migrations, models
 | |
| import django.db.models.deletion
 | |
| import django.utils.timezone
 | |
| import various.models
 | |
| import tvorba.models
 | |
| import taggit.managers
 | |
| 
 | |
| def nastav_nove_contenttypes(apps, schema_editor):
 | |
|     ContentType = apps.get_model('contenttypes', 'ContentType')
 | |
|     for m in ('zmrazenavysledkovka', 'deadline', 'cislo', 'rocnik', 'pohadka', 'tema', 'problem', 'problemy_opravovatele', 'uloha', 'clanek'):
 | |
|         ContentType.objects.filter(app_label='seminar', model=m).update(app_label='tvorba')
 | |
| 
 | |
| def nastav_stare_contenttypes(apps, schema_editor):
 | |
|     ContentType = apps.get_model('contenttypes', 'ContentType')
 | |
|     for m in ('zmrazenavysledkovka', 'deadline', 'cislo', 'rocnik', 'pohadka', 'tema', 'problem', 'problemy_opravovatele', 'uloha', 'clanek'):
 | |
|         ContentType.objects.filter(app_label='tvorba', model=m).update(app_label='seminar')
 | |
| 
 | |
| class Migration(migrations.Migration):
 | |
| 
 | |
|     initial = True
 | |
| 
 | |
|     dependencies = [
 | |
|         ('seminar', '0137_tvorba_unmanage'),
 | |
|     ]
 | |
| 
 | |
|     operations = [
 | |
|         migrations.CreateModel(
 | |
|             name='Cislo',
 | |
|             fields=[
 | |
|                 ('id', models.AutoField(primary_key=True, serialize=False)),
 | |
|                 ('poradi', models.CharField(db_index=True, help_text='Většinou jen "1", vyjímečně "7-8", lexikograficky určuje pořadí v ročníku!', max_length=32, verbose_name='název čísla')),
 | |
|                 ('datum_vydani', models.DateField(blank=True, help_text='Datum vydání finální verze', null=True, verbose_name='datum vydání')),
 | |
|                 ('verejne_db', models.BooleanField(db_column='verejne', default=False, verbose_name='číslo zveřejněno')),
 | |
|                 ('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k číslu (plain text)', verbose_name='neveřejná poznámka')),
 | |
|                 ('pdf', models.FileField(blank=True, help_text='PDF čísla, které si mohou řešitelé stáhnout', null=True, storage=various.models.OverwriteStorage(), upload_to=tvorba.models.cislo_pdf_filename, verbose_name='pdf')),
 | |
|                 ('titulka_nahled', models.ImageField(blank=True, help_text='Obrázek titulní strany, generuje se automaticky', null=True, upload_to=tvorba.models.cislo_png_filename, verbose_name='Obrázek titulní strany')),
 | |
|                 ('rocnik', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='cisla', to='tvorba.rocnik', verbose_name='ročník')),
 | |
|             ],
 | |
|             options={
 | |
|                 'verbose_name': 'Číslo',
 | |
|                 'verbose_name_plural': 'Čísla',
 | |
|                 'db_table': 'seminar_cisla',
 | |
|                 'ordering': ['-rocnik__rocnik', '-poradi'],
 | |
|                 'managed': False,
 | |
|             },
 | |
|         ),
 | |
|         migrations.CreateModel(
 | |
|             name='Deadline',
 | |
|             fields=[
 | |
|                 ('id', models.AutoField(primary_key=True, serialize=False)),
 | |
|                 ('deadline', models.DateTimeField(default=datetime.datetime(2024, 10, 30, 22, 59, 59, 999999, tzinfo=datetime.timezone.utc))),
 | |
|                 ('cislo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='deadline_v_cisle', to='tvorba.cislo', verbose_name='deadline v čísle')),
 | |
|                 ('typ', models.CharField(choices=[('cisla', 'Deadline celého čísla'), ('prvni', 'První deadline'), ('prvniasous', 'Sousový a první deadline'), ('sous', 'Sousový deadline')], max_length=32, verbose_name='typ deadlinu')),
 | |
|                 ('verejna_vysledkovka', models.BooleanField(db_column='verejna_vysledkovka', default=False, verbose_name='veřejná výsledkovka')),
 | |
|             ],
 | |
|             options={
 | |
|                 'verbose_name': 'Deadline',
 | |
|                 'verbose_name_plural': 'Deadliny',
 | |
|                 'db_table': 'seminar_deadliny',
 | |
|                 'ordering': ['deadline'],
 | |
|                 'managed': False,
 | |
|             },
 | |
|         ),
 | |
|         migrations.CreateModel(
 | |
|             name='Pohadka',
 | |
|             fields=[
 | |
|                 ('id', models.AutoField(primary_key=True, serialize=False)),
 | |
|                 ('vytvoreno', models.DateTimeField(blank=True, default=django.utils.timezone.now, editable=False, verbose_name='Vytvořeno')),
 | |
|                 ('autor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='personalni.organizator', verbose_name='Autor pohádky')),
 | |
|             ],
 | |
|             options={
 | |
|                 'verbose_name': 'Pohádka',
 | |
|                 'verbose_name_plural': 'Pohádky',
 | |
|                 'db_table': 'seminar_pohadky',
 | |
|                 'ordering': ['vytvoreno'],
 | |
|                 'managed': False,
 | |
|             },
 | |
|         ),
 | |
|         migrations.CreateModel(
 | |
|             name='Problem',
 | |
|             fields=[
 | |
|                 ('id', models.AutoField(primary_key=True, serialize=False)),
 | |
|                 ('nazev', models.CharField(max_length=256, verbose_name='název')),
 | |
|                 ('stav', models.CharField(choices=[('navrh', 'Návrh'), ('zadany', 'Zadaný'), ('vyreseny', 'Vyřešený'), ('smazany', 'Smazaný')], default='navrh', max_length=32, verbose_name='stav problému')),
 | |
|                 ('autor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='autor_problemu_%(class)s', to='personalni.organizator', verbose_name='autor problému')),
 | |
|                 ('garant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='garant_problemu_%(class)s', to='personalni.organizator', verbose_name='garant zadaného problému')),
 | |
|                 ('nadproblem', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='podproblem', to='tvorba.problem', verbose_name='nadřazený problém')),
 | |
|                 ('opravovatele', models.ManyToManyField(blank=True, related_name='opravovatele_%(class)s', through='tvorba.Problemy_Opravovatele', to='personalni.organizator', verbose_name='opravovatelé')),
 | |
|                 ('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')),
 | |
|                 ('zamereni', taggit.managers.TaggableManager(blank=True, help_text='Zaměření M/F/I/O problému, příp. další tagy', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='zaměření')),
 | |
|                 ('poznamka', models.TextField(blank=True, help_text='Neveřejný návrh úlohy, návrh řešení, text zadání, poznámky ...', verbose_name='org poznámky (HTML)')),
 | |
|                 ('kod', models.CharField(blank=True, default='', help_text='Číslo/kód úlohy v čísle nebo kód tématu/článku/seriálu v ročníku', max_length=32, verbose_name='lokální kód')),
 | |
|                 ('vytvoreno', models.DateTimeField(blank=True, default=django.utils.timezone.now, editable=False, verbose_name='vytvořeno')),
 | |
|             ],
 | |
|             options={
 | |
|                 'verbose_name': 'Problém',
 | |
|                 'verbose_name_plural': 'Problémy',
 | |
|                 'db_table': 'seminar_problemy',
 | |
|                 'ordering': ['nazev'],
 | |
|                 'managed': False,
 | |
|             },
 | |
|         ),
 | |
|         migrations.CreateModel(
 | |
|             name='Problemy_Opravovatele',
 | |
|             fields=[
 | |
|                 ('id', models.AutoField(primary_key=True, serialize=False)),
 | |
|                 ('problem', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tvorba.problem')),
 | |
|                 ('organizator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='personalni.organizator')),
 | |
|             ],
 | |
|             options={
 | |
|                 'db_table': 'seminar_problemy_opravovatele',
 | |
|                 'managed': False,
 | |
|             },
 | |
|         ),
 | |
|         migrations.CreateModel(
 | |
|             name='Rocnik',
 | |
|             fields=[
 | |
|                 ('id', models.AutoField(primary_key=True, serialize=False)),
 | |
|                 ('prvni_rok', models.IntegerField(db_index=True, unique=True, verbose_name='první rok')),
 | |
|                 ('rocnik', models.IntegerField(db_index=True, unique=True, verbose_name='číslo ročníku')),
 | |
|                 ('exportovat', models.BooleanField(db_column='exportovat', default=False, help_text='Exportuje se jen podle tohoto flagu (ne veřejnosti), a to jen čísla s veřejnou výsledkovkou', verbose_name='export do AESOPa')),
 | |
|             ],
 | |
|             options={
 | |
|                 'verbose_name': 'Ročník',
 | |
|                 'verbose_name_plural': 'Ročníky',
 | |
|                 'db_table': 'seminar_rocniky',
 | |
|                 'ordering': ['-rocnik'],
 | |
|                 'managed': False,
 | |
|             },
 | |
|         ),
 | |
|         migrations.CreateModel(
 | |
|             name='Clanek',
 | |
|             fields=[
 | |
|                 ('problem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='tvorba.problem')),
 | |
|                 ('strana', models.PositiveIntegerField(blank=True, null=True, verbose_name='první strana')),
 | |
|                 ('cislo', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vydane_clanky', to='tvorba.cislo', verbose_name='číslo vydání')),
 | |
|             ],
 | |
|             options={
 | |
|                 'verbose_name': 'Článek',
 | |
|                 'verbose_name_plural': 'Články',
 | |
|                 'db_table': 'seminar_clanky',
 | |
|                 'managed': False,
 | |
|             },
 | |
|             bases=('tvorba.problem',),
 | |
|         ),
 | |
|         migrations.CreateModel(
 | |
|             name='Tema',
 | |
|             fields=[
 | |
|                 ('problem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='tvorba.problem')),
 | |
|                 ('tema_typ', models.CharField(choices=[('tema', 'Téma'), ('serial', 'Seriál')], default='tema', max_length=16, verbose_name='Typ tématu')),
 | |
|                 ('rocnik', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='temata', to='tvorba.rocnik', verbose_name='ročník')),
 | |
|                 ('abstrakt', models.TextField(blank=True, verbose_name='Abstrakt na rozcestník')),
 | |
|                 ('obrazek', models.ImageField(blank=True, null=True, upload_to='', verbose_name='Obrázek na rozcestník')),
 | |
|             ],
 | |
|             options={
 | |
|                 'verbose_name': 'Téma',
 | |
|                 'verbose_name_plural': 'Témata',
 | |
|                 'db_table': 'seminar_temata',
 | |
|                 'managed': False,
 | |
|             },
 | |
|             bases=('tvorba.problem',),
 | |
|         ),
 | |
|         migrations.CreateModel(
 | |
|             name='Uloha',
 | |
|             fields=[
 | |
|                 ('problem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='tvorba.problem')),
 | |
|                 ('max_body', models.DecimalField(blank=True, decimal_places=1, max_digits=8, null=True, verbose_name='maximum bodů')),
 | |
|                 ('cislo_zadani', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='zadane_ulohy', to='tvorba.cislo', verbose_name='číslo zadání')),
 | |
|                 ('cislo_reseni', models.ForeignKey(blank=True, help_text='Číslo s řešením úlohy, jen pro úlohy', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='resene_ulohy', to='tvorba.cislo', verbose_name='číslo řešení')),
 | |
|                 ('cislo_deadline', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='deadlinove_ulohy', to='tvorba.cislo', verbose_name='číslo deadlinu')),
 | |
|             ],
 | |
|             options={
 | |
|                 'verbose_name': 'Úloha',
 | |
|                 'verbose_name_plural': 'Úlohy',
 | |
|                 'db_table': 'seminar_ulohy',
 | |
|                 'managed': False,
 | |
|             },
 | |
|             bases=('tvorba.problem',),
 | |
|         ),
 | |
|         migrations.CreateModel(
 | |
|             name='ZmrazenaVysledkovka',
 | |
|             fields=[
 | |
|                 ('deadline', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='vysledkovka_v_deadlinu', serialize=False, to='tvorba.deadline')),
 | |
|                 ('html', models.TextField()),
 | |
|             ],
 | |
|             options={
 | |
|                 'verbose_name': 'Zmražená výsledkovka',
 | |
|                 'verbose_name_plural': 'Zmražené výsledkovky',
 | |
|                 'db_table': 'seminar_vysledkovky',
 | |
|                 'managed': False,
 | |
|             },
 | |
|         ),
 | |
|         migrations.RunPython(nastav_nove_contenttypes, nastav_stare_contenttypes),
 | |
|     ]
 |