Hodně oprav
Neumím kódit :-)
This commit is contained in:
parent
b37953bc90
commit
70c3ec8b6c
2 changed files with 14 additions and 11 deletions
|
@ -1,14 +1,15 @@
|
||||||
from django import template
|
from django import template
|
||||||
|
from django.utils.safestring import mark_safe
|
||||||
from seminar.utils import TypDeadline, deadline
|
from seminar.utils import TypDeadline, deadline
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
@register.filter(name='deadline')
|
@register.filter(name='deadline')
|
||||||
def deadline_text(datum):
|
def deadline_text(datum):
|
||||||
typ, cislo, deadline = deadline(datum)
|
typ, cislo, dl = deadline(datum)
|
||||||
strings = {
|
strings = {
|
||||||
TypDeadline.PredDeadline: f"1. deadline čísla {cislo} ({deadline})",
|
TypDeadline.PredDeadline: f"1. deadline čísla {cislo} ({dl})",
|
||||||
TypDeadline.SousDeadline: f"Soustřeďkový deadline čísla {cislo} ({deadline})",
|
TypDeadline.SousDeadline: f"Soustřeďkový deadline čísla {cislo} ({dl})",
|
||||||
TypDeadline.FinalDeadline: f"Finální deadline čísla {cislo} ({deadline})",
|
TypDeadline.FinalDeadline: f"Finální deadline čísla {cislo} ({dl})",
|
||||||
}
|
}
|
||||||
return strings[typ]
|
return strings[typ]
|
||||||
|
|
||||||
|
@ -21,4 +22,4 @@ def deadline_html(datum):
|
||||||
TypDeadline.SousDeadline: 'sous_deadline',
|
TypDeadline.SousDeadline: 'sous_deadline',
|
||||||
TypDeadline.FinalDeadline: 'final_deadline',
|
TypDeadline.FinalDeadline: 'final_deadline',
|
||||||
}
|
}
|
||||||
return f'<span class="{classes[typ]}">{text}</span>'
|
return mark_safe(f'<span class="{classes[typ]}">{text}</span>')
|
||||||
|
|
|
@ -309,7 +309,7 @@ def deadline_v_rocniku(datum, rocnik):
|
||||||
deadliny.append((TypDeadline.FinalDeadline, c, c.datum_deadline))
|
deadliny.append((TypDeadline.FinalDeadline, c, c.datum_deadline))
|
||||||
deadliny = sorted(deadliny, key=lambda x: x[2]) # podle data
|
deadliny = sorted(deadliny, key=lambda x: x[2]) # podle data
|
||||||
for dl in deadliny:
|
for dl in deadliny:
|
||||||
if datum <= dl:
|
if datum <= dl[2]:
|
||||||
# První takový deadline je ten nejtěsnější
|
# První takový deadline je ten nejtěsnější
|
||||||
return dl
|
return dl
|
||||||
|
|
||||||
|
@ -319,20 +319,22 @@ def deadline(datum):
|
||||||
Vrací trojici (TypDeadline, Cislo, datumDeadline: date).
|
Vrací trojici (TypDeadline, Cislo, datumDeadline: date).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if isinstance(datum, datetime.datetime):
|
||||||
|
datum = datum.date()
|
||||||
rok = datum.year
|
rok = datum.year
|
||||||
# Dva ročníky podezřelé z obsahování dat
|
# Dva ročníky podezřelé z obsahování dat
|
||||||
pozdejsi_rocnik = m.Rocnik.filter(prvni_rok=rok)
|
pozdejsi_rocnik = m.Rocnik.objects.filter(prvni_rok=rok)
|
||||||
drivejsi_rocnik = m.Rocnik.filter(druhy_rok=rok)
|
drivejsi_rocnik = m.Rocnik.objects.filter(prvni_rok=rok-1)
|
||||||
if any(
|
if any([
|
||||||
pozdejsi_rocnik.count() > 1,
|
pozdejsi_rocnik.count() > 1,
|
||||||
drivejsi_rocnik.count() > 1,
|
drivejsi_rocnik.count() > 1,
|
||||||
):
|
]):
|
||||||
raise ValueError(f"Více ročníků začíná/končí stejným rokem: {rok}")
|
raise ValueError(f"Více ročníků začíná/končí stejným rokem: {rok}")
|
||||||
pozdejsi_rocnik = pozdejsi_rocnik.first() if pozdejsi_rocnik.count() > 0 else None
|
pozdejsi_rocnik = pozdejsi_rocnik.first() if pozdejsi_rocnik.count() > 0 else None
|
||||||
drivejsi_rocnik = drivejsi_rocnik.first() if drivejsi_rocnik.count() > 0 else None
|
drivejsi_rocnik = drivejsi_rocnik.first() if drivejsi_rocnik.count() > 0 else None
|
||||||
|
|
||||||
# Předpokládáme, že neexistuje číslo, které má deadline ale nemá finální deadline.
|
# Předpokládáme, že neexistuje číslo, které má deadline ale nemá finální deadline.
|
||||||
posledni_deadline_drivejsiho_rocniku = m.Cislo.objects.get(rocnik=drivejsi_rocnik, datum_deadline__isnull=False).datum_deadline
|
posledni_deadline_drivejsiho_rocniku = m.Cislo.objects.filter(rocnik=drivejsi_rocnik, datum_deadline__isnull=False).last().datum_deadline
|
||||||
|
|
||||||
if datum <= posledni_deadline_drivejsiho_rocniku:
|
if datum <= posledni_deadline_drivejsiho_rocniku:
|
||||||
return deadline_v_rocniku(datum, drivejsi_rocnik)
|
return deadline_v_rocniku(datum, drivejsi_rocnik)
|
||||||
|
|
Loading…
Reference in a new issue