81 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Generated by Django 3.2.15 on 2022-10-01 08:44
 | |
| 
 | |
| import datetime
 | |
| from django.db import migrations, models
 | |
| import django.db.models.deletion
 | |
| from django.utils import timezone
 | |
| 
 | |
| from tvorba.models import Deadline as mDeadline
 | |
| 
 | |
| 
 | |
| def vytvor_deadliny(apps, schema_editor):
 | |
|     Cislo = apps.get_model('seminar', 'Cislo')
 | |
|     Deadline = apps.get_model('seminar', 'Deadline')
 | |
| 
 | |
|     for cislo in Cislo.objects.all():
 | |
|         if cislo.rocnik.rocnik < 26:
 | |
|             Deadline.objects.create(
 | |
|                 cislo=cislo,
 | |
|                 typ=mDeadline.TYP_CISLA,
 | |
|                 deadline=timezone.make_aware(datetime.datetime.combine(datetime.date(1994 + cislo.rocnik.rocnik, 6, int(cislo.poradi[0])), datetime.time.min)),
 | |
|                 verejna_vysledkovka=cislo.verejna_vysledkovka,
 | |
|             )
 | |
|             continue
 | |
| 
 | |
|         def vytvor_deadline(date: datetime.date, typ):
 | |
|             Deadline.objects.create(
 | |
|                 cislo=cislo,
 | |
|                 typ=typ,
 | |
|                 deadline=timezone.make_aware(datetime.datetime.combine(date, datetime.time.min)) + datetime.timedelta(days=1),
 | |
|                 verejna_vysledkovka=True
 | |
|             )
 | |
| 
 | |
|         if cislo.datum_deadline_soustredeni and cislo.datum_deadline_soustredeni == cislo.datum_preddeadline:
 | |
|             vytvor_deadline(
 | |
|                 date=cislo.datum_deadline_soustredeni,
 | |
|                 typ=mDeadline.TYP_PRVNI_A_SOUS
 | |
|             )
 | |
|         else:
 | |
|             if cislo.datum_deadline_soustredeni:
 | |
|                 vytvor_deadline(
 | |
|                     date=cislo.datum_deadline_soustredeni,
 | |
|                     typ=mDeadline.TYP_SOUS
 | |
|                 )
 | |
|             if cislo.datum_preddeadline:
 | |
|                 vytvor_deadline(
 | |
|                     date=cislo.datum_preddeadline,
 | |
|                     typ=mDeadline.TYP_PRVNI
 | |
|                 )
 | |
| 
 | |
|         if cislo.datum_deadline:
 | |
|             vytvor_deadline(
 | |
|                 date=cislo.datum_deadline,
 | |
|                 typ=mDeadline.TYP_CISLA
 | |
|             )
 | |
| 
 | |
| 
 | |
| class Migration(migrations.Migration):
 | |
| 
 | |
|     dependencies = [
 | |
|         ('seminar', '0102_osoba_jak_se_dozvedeli'),
 | |
|     ]
 | |
| 
 | |
|     operations = [
 | |
|         migrations.CreateModel(
 | |
|             name='Deadline',
 | |
|             fields=[
 | |
|                 ('id', models.AutoField(primary_key=True, serialize=False)),
 | |
|                 ('deadline', models.DateTimeField(default=timezone.make_aware(datetime.datetime.combine(timezone.now(), datetime.time.max)))),
 | |
|                 ('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')),
 | |
|                 ('cislo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='deadline_v_cisle', to='seminar.cislo', verbose_name='deadline v čísle')),
 | |
|             ],
 | |
|             options={
 | |
|                 'verbose_name': 'Deadline',
 | |
|                 'verbose_name_plural': 'Deadliny',
 | |
|                 'db_table': 'seminar_deadliny',
 | |
|                 'ordering': ['deadline'],
 | |
|             },
 | |
|         ),
 | |
|         migrations.RunPython(vytvor_deadliny, migrations.RunPython.noop),
 | |
|     ]
 |