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 = 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í',
|
||||
help_text='Zaměření M/F/I/O problému, příp. další tagy', blank=True)
|
||||
|
|
|
@ -40,6 +40,9 @@
|
|||
|
||||
<div class="vitej">
|
||||
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>
|
||||
|
|
|
@ -43,14 +43,15 @@ import time
|
|||
|
||||
from seminar.utils import aktivniResitele, resi_v_rocniku
|
||||
|
||||
|
||||
def verejna_temata(rocnik):
|
||||
"""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')
|
||||
|
||||
def temata_v_rocniku(rocnik):
|
||||
return Problem.objects.filter(typ=Problem.TYP_TEMA, rocnik=rocnik)
|
||||
# ze starého modelu
|
||||
#def verejna_temata(rocnik):
|
||||
# """
|
||||
# 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')
|
||||
#
|
||||
#def temata_v_rocniku(rocnik):
|
||||
# return Problem.objects.filter(typ=Problem.TYP_TEMA, rocnik=rocnik)
|
||||
|
||||
def get_problemy_k_tematu(tema):
|
||||
return Problem.objects.filter(nadproblem = tema)
|
||||
|
@ -242,6 +243,12 @@ def spravne_novinky(request):
|
|||
qs = qs.filter(zverejneno=True)
|
||||
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):
|
||||
template_name='seminar/titulnistrana.html'
|
||||
|
@ -283,7 +290,16 @@ class TitulniStranaView(generic.ListView):
|
|||
context['deadline_soustredeni'] = deadline_soustredeni
|
||||
|
||||
# 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
|
||||
|
||||
|
@ -347,7 +363,8 @@ class ArchivView(generic.ListView):
|
|||
### Výsledky
|
||||
|
||||
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.),
|
||||
podle toho, jak jdou za sebou ve výsledkovce.
|
||||
Parametr:
|
||||
|
@ -387,7 +404,8 @@ def sloupec_s_poradim(setrizene_body):
|
|||
return sloupec_s_poradim
|
||||
|
||||
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:
|
||||
rocnik (Rocnik): ročník semináře
|
||||
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ě
|
||||
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žší
|
||||
setrizeni_resitele_id, setrizeni_resitele, setrizene_body = setrid_resitele_a_body(resitel_rocnikbody_sezn)
|
||||
poradi = sloupec_s_poradim(setrizene_body)
|
||||
|
|
Loading…
Reference in a new issue