diff --git a/seminar/migrations/0103_deadline.py b/seminar/migrations/0103_deadline.py index b79f6bd3..337f6365 100644 --- a/seminar/migrations/0103_deadline.py +++ b/seminar/migrations/0103_deadline.py @@ -3,6 +3,7 @@ import datetime from django.db import migrations, models import django.db.models.deletion +from django.db.models import F from django.utils import timezone import seminar.models as m @@ -11,13 +12,19 @@ import seminar.models as m def vytvor_deadliny(apps, schema_editor): Cislo = apps.get_model('seminar', 'Cislo') Deadline = apps.get_model('seminar', 'Deadline') + Hodnoceni = apps.get_model('seminar', 'Hodnoceni') for cislo in Cislo.objects.all(): + if not (cislo.datum_deadline or cislo.datum_deadline_soustredeni or cislo.datum_preddeadline): + h = Hodnoceni.objects.filter(cislo_body=cislo).order_by(F("reseni__cas_doruceni")).last() + if h is not None: + cislo.datum_deadline = h.reseni.cas_doruceni.date() + cislo.save() if cislo.datum_deadline_soustredeni and cislo.datum_deadline_soustredeni == cislo.datum_preddeadline: d = Deadline() d.cislo = cislo d.typ = m.Deadline.TYP_PRVNI_A_SOUS - d.deadline = timezone.make_aware(datetime.datetime.combine(cislo.datum_deadline_soustredeni, datetime.time.max)) + d.deadline = timezone.make_aware(datetime.datetime.combine(cislo.datum_deadline_soustredeni, datetime.time.min)) + datetime.timedelta(days=1) d.verejna_vysledkovka = cislo.verejna_vysledkovka d.save() else: @@ -25,14 +32,14 @@ def vytvor_deadliny(apps, schema_editor): d = Deadline() d.cislo = cislo d.typ = m.Deadline.TYP_SOUS - d.deadline = timezone.make_aware(datetime.datetime.combine(cislo.datum_deadline_soustredeni, datetime.time.max)) + d.deadline = timezone.make_aware(datetime.datetime.combine(cislo.datum_deadline_soustredeni, datetime.time.min)) + datetime.timedelta(days=1) d.verejna_vysledkovka = cislo.verejna_vysledkovka d.save() if cislo.datum_preddeadline: d = Deadline() d.cislo = cislo d.typ = m.Deadline.TYP_PRVNI - d.deadline = timezone.make_aware(datetime.datetime.combine(cislo.datum_preddeadline, datetime.time.max)) + d.deadline = timezone.make_aware(datetime.datetime.combine(cislo.datum_preddeadline, datetime.time.min)) + datetime.timedelta(days=1) d.verejna_vysledkovka = cislo.verejna_vysledkovka d.save() @@ -40,7 +47,7 @@ def vytvor_deadliny(apps, schema_editor): d = Deadline() d.cislo = cislo d.typ = m.Deadline.TYP_CISLA - d.deadline = timezone.make_aware(datetime.datetime.combine(cislo.datum_deadline, datetime.time.max)) + d.deadline = timezone.make_aware(datetime.datetime.combine(cislo.datum_deadline, datetime.time.min)) + datetime.timedelta(days=1) d.verejna_vysledkovka = cislo.verejna_vysledkovka d.save() diff --git a/seminar/migrations/0104_hodnoceni_deadline_body.py b/seminar/migrations/0104_hodnoceni_deadline_body.py index 7f797a11..bc662479 100644 --- a/seminar/migrations/0104_hodnoceni_deadline_body.py +++ b/seminar/migrations/0104_hodnoceni_deadline_body.py @@ -15,7 +15,7 @@ def prirad_deadliny(apps, schema_editor): h.deadline_body = d h.save() - if h.cislo_body and int(h.deadline_body.cislo.poradi) + 1 != int(h.cislo_body.poradi[0]): + if h.cislo_body and (int(h.deadline_body.cislo.poradi) + 2 < int(h.cislo_body.poradi[0]) or int(h.deadline_body.cislo.poradi) > int(h.cislo_body.poradi[0])): log.error(f"Hodnocení {h.id} se špatně změnilo číslo z {h.cislo_body} na {h.deadline_body.cislo}")