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 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>')

14
seminar/utils.py

@ -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…
Cancel
Save