přidání odkazů na aktivní témata na titulní stránku
This commit is contained in:
parent
b81420e06b
commit
67c1e43dc1
3 changed files with 34 additions and 12 deletions
|
@ -698,6 +698,7 @@ class Problem(SeminarModelBase,PolymorphicModel):
|
||||||
(STAV_SMAZANY, 'Smazaný'),
|
(STAV_SMAZANY, 'Smazaný'),
|
||||||
]
|
]
|
||||||
stav = models.CharField('stav problému', max_length=32, choices=STAV_CHOICES, blank=False, default=STAV_NAVRH)
|
stav = models.CharField('stav problému', max_length=32, choices=STAV_CHOICES, blank=False, default=STAV_NAVRH)
|
||||||
|
# Téma je taky Problém, takže má stavy, "zadané" témátko je aktuálně otevřené a dá se k němu něco poslat (řešení nebo článek)
|
||||||
|
|
||||||
zamereni = TaggableManager(verbose_name='zaměření',
|
zamereni = TaggableManager(verbose_name='zaměření',
|
||||||
help_text='Zaměření M/F/I/O problému, příp. další tagy', blank=True)
|
help_text='Zaměření M/F/I/O problému, příp. další tagy', blank=True)
|
||||||
|
|
|
@ -40,6 +40,9 @@
|
||||||
|
|
||||||
<div class="vitej">
|
<div class="vitej">
|
||||||
Přidej se k nám! Pusť se do řešení témát a pojeď na soustředění.
|
Přidej se k nám! Pusť se do řešení témát a pojeď na soustředění.
|
||||||
|
{% for tema in aktualni_temata %}
|
||||||
|
<a href="{{ tema.url }}"> <div class="button"> {{ tema.nazev }} </div> </a>
|
||||||
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -43,14 +43,15 @@ import time
|
||||||
|
|
||||||
from seminar.utils import aktivniResitele, resi_v_rocniku
|
from seminar.utils import aktivniResitele, resi_v_rocniku
|
||||||
|
|
||||||
|
# ze starého modelu
|
||||||
def verejna_temata(rocnik):
|
#def verejna_temata(rocnik):
|
||||||
"""Vrací queryset zveřejněných témat v daném ročníku.
|
# """
|
||||||
"""
|
# Vrací queryset zveřejněných témat v daném ročníku.
|
||||||
return Problem.objects.filter(typ=Problem.TYP_TEMA, cislo_zadani__rocnik=rocnik, cislo_zadani__verejne_db=True).order_by('kod')
|
# """
|
||||||
|
# return Problem.objects.filter(typ=Problem.TYP_TEMA, cislo_zadani__rocnik=rocnik, cislo_zadani__verejne_db=True).order_by('kod')
|
||||||
def temata_v_rocniku(rocnik):
|
#
|
||||||
return Problem.objects.filter(typ=Problem.TYP_TEMA, rocnik=rocnik)
|
#def temata_v_rocniku(rocnik):
|
||||||
|
# return Problem.objects.filter(typ=Problem.TYP_TEMA, rocnik=rocnik)
|
||||||
|
|
||||||
def get_problemy_k_tematu(tema):
|
def get_problemy_k_tematu(tema):
|
||||||
return Problem.objects.filter(nadproblem = tema)
|
return Problem.objects.filter(nadproblem = tema)
|
||||||
|
@ -242,6 +243,12 @@ def spravne_novinky(request):
|
||||||
qs = qs.filter(zverejneno=True)
|
qs = qs.filter(zverejneno=True)
|
||||||
return qs.order_by('-datum')
|
return qs.order_by('-datum')
|
||||||
|
|
||||||
|
def aktualni_temata(rocnik):
|
||||||
|
"""
|
||||||
|
Vrací PolymorphicQuerySet témat v daném ročníku, ke kterým se aktuálně dá něco odevzdat.
|
||||||
|
"""
|
||||||
|
return Tema.objects.filter(rocnik=rocnik, stav='zadany').order_by('kod')
|
||||||
|
|
||||||
|
|
||||||
class TitulniStranaView(generic.ListView):
|
class TitulniStranaView(generic.ListView):
|
||||||
template_name='seminar/titulnistrana.html'
|
template_name='seminar/titulnistrana.html'
|
||||||
|
@ -283,7 +290,16 @@ class TitulniStranaView(generic.ListView):
|
||||||
context['deadline_soustredeni'] = deadline_soustredeni
|
context['deadline_soustredeni'] = deadline_soustredeni
|
||||||
|
|
||||||
# Aktuální témata
|
# Aktuální témata
|
||||||
|
nazvy_a_odkazy_na_aktualni_temata = []
|
||||||
|
akt_temata = aktualni_temata(nastaveni.aktualni_rocnik)
|
||||||
|
|
||||||
|
for tema in akt_temata:
|
||||||
|
# FIXME: netuším, jestli funguje tema.verejne_url(), nemáme testdata na témátka - je to asi url vzhledem k ročníku
|
||||||
|
nazvy_a_odkazy_na_aktualni_temata.append({'nazev':tema.nazev,'url':tema.verejne_url()})
|
||||||
|
|
||||||
|
context['aktualni_temata'] = nazvy_a_odkazy_na_aktualni_temata
|
||||||
|
|
||||||
|
print(context)
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
@ -347,7 +363,8 @@ class ArchivView(generic.ListView):
|
||||||
### Výsledky
|
### Výsledky
|
||||||
|
|
||||||
def sloupec_s_poradim(setrizene_body):
|
def sloupec_s_poradim(setrizene_body):
|
||||||
""" Ze seznamu obsahujícího sestupně setřízené body řešitelů za daný ročník
|
"""
|
||||||
|
Ze seznamu obsahujícího sestupně setřízené body řešitelů za daný ročník
|
||||||
vytvoří seznam s pořadími (včetně 3.-5. a pak 2 volná místa atp.),
|
vytvoří seznam s pořadími (včetně 3.-5. a pak 2 volná místa atp.),
|
||||||
podle toho, jak jdou za sebou ve výsledkovce.
|
podle toho, jak jdou za sebou ve výsledkovce.
|
||||||
Parametr:
|
Parametr:
|
||||||
|
@ -387,7 +404,8 @@ def sloupec_s_poradim(setrizene_body):
|
||||||
return sloupec_s_poradim
|
return sloupec_s_poradim
|
||||||
|
|
||||||
def cisla_rocniku(rocnik, jen_verejne=True):
|
def cisla_rocniku(rocnik, jen_verejne=True):
|
||||||
""" Vrátí všechna čísla daného ročníku.
|
"""
|
||||||
|
Vrátí všechna čísla daného ročníku.
|
||||||
Parametry:
|
Parametry:
|
||||||
rocnik (Rocnik): ročník semináře
|
rocnik (Rocnik): ročník semináře
|
||||||
jen_verejne (bool): zda se mají vrátit jen veřejná, nebo všechna čísla
|
jen_verejne (bool): zda se mají vrátit jen veřejná, nebo všechna čísla
|
||||||
|
@ -542,7 +560,7 @@ def vysledkovka_rocniku(rocnik, jen_verejne=True):
|
||||||
|
|
||||||
# získáme body za ročník, seznam obsahuje dvojice (řešitel_id, body) setřízené sestupně
|
# získáme body za ročník, seznam obsahuje dvojice (řešitel_id, body) setřízené sestupně
|
||||||
resitel_rocnikbody_sezn = secti_body_za_rocnik(rocnik, aktivni_resitele)
|
resitel_rocnikbody_sezn = secti_body_za_rocnik(rocnik, aktivni_resitele)
|
||||||
|
|
||||||
# setřídíme řešitele podle počtu bodů a získáme seznam s body od nejvyšších po nenižší
|
# setřídíme řešitele podle počtu bodů a získáme seznam s body od nejvyšších po nenižší
|
||||||
setrizeni_resitele_id, setrizeni_resitele, setrizene_body = setrid_resitele_a_body(resitel_rocnikbody_sezn)
|
setrizeni_resitele_id, setrizeni_resitele, setrizene_body = setrid_resitele_a_body(resitel_rocnikbody_sezn)
|
||||||
poradi = sloupec_s_poradim(setrizene_body)
|
poradi = sloupec_s_poradim(setrizene_body)
|
||||||
|
|
Loading…
Reference in a new issue