Browse Source

Hodně oprav

Neumím kódit :-)
middleware_test
Pavel "LEdoian" Turinsky 3 years ago
parent
commit
70c3ec8b6c
  1. 11
      seminar/templatetags/deadliny.py
  2. 14
      seminar/utils.py

11
seminar/templatetags/deadliny.py

@ -1,14 +1,15 @@
from django import template
from django.utils.safestring import mark_safe
from seminar.utils import TypDeadline, deadline
register = template.Library()
@register.filter(name='deadline')
def deadline_text(datum):
typ, cislo, deadline = deadline(datum)
typ, cislo, dl = deadline(datum)
strings = {
TypDeadline.PredDeadline: f"1. deadline čísla {cislo} ({deadline})",
TypDeadline.SousDeadline: f"Soustřeďkový deadline čísla {cislo} ({deadline})",
TypDeadline.FinalDeadline: f"Finální deadline čísla {cislo} ({deadline})",
TypDeadline.PredDeadline: f"1. deadline čísla {cislo} ({dl})",
TypDeadline.SousDeadline: f"Soustřeďkový deadline čísla {cislo} ({dl})",
TypDeadline.FinalDeadline: f"Finální deadline čísla {cislo} ({dl})",
}
return strings[typ]
@ -21,4 +22,4 @@ def deadline_html(datum):
TypDeadline.SousDeadline: 'sous_deadline',
TypDeadline.FinalDeadline: 'final_deadline',
}
return f'<span class="{classes[typ]}">{text}</span>'
return mark_safe(f'<span class="{classes[typ]}">{text}</span>')

14
seminar/utils.py

@ -309,7 +309,7 @@ def deadline_v_rocniku(datum, rocnik):
deadliny.append((TypDeadline.FinalDeadline, c, c.datum_deadline))
deadliny = sorted(deadliny, key=lambda x: x[2]) # podle data
for dl in deadliny:
if datum <= dl:
if datum <= dl[2]:
# První takový deadline je ten nejtěsnější
return dl
@ -319,20 +319,22 @@ def deadline(datum):
Vrací trojici (TypDeadline, Cislo, datumDeadline: date).
"""
if isinstance(datum, datetime.datetime):
datum = datum.date()
rok = datum.year
# Dva ročníky podezřelé z obsahování dat
pozdejsi_rocnik = m.Rocnik.filter(prvni_rok=rok)
drivejsi_rocnik = m.Rocnik.filter(druhy_rok=rok)
if any(
pozdejsi_rocnik = m.Rocnik.objects.filter(prvni_rok=rok)
drivejsi_rocnik = m.Rocnik.objects.filter(prvni_rok=rok-1)
if any([
pozdejsi_rocnik.count() > 1,
drivejsi_rocnik.count() > 1,
):
]):
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
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.
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:
return deadline_v_rocniku(datum, drivejsi_rocnik)

Loading…
Cancel
Save