Rozcestnik tematek - odkazy
This commit is contained in:
parent
0b40d04fad
commit
9a0d229f9a
4 changed files with 43 additions and 22 deletions
|
@ -23,7 +23,7 @@ from reversion import revisions as reversion
|
||||||
|
|
||||||
from seminar.utils import roman, FirstTagParser # Pro získání úryvku z TextNode
|
from seminar.utils import roman, FirstTagParser # Pro získání úryvku z TextNode
|
||||||
|
|
||||||
from unidecode import unidecode
|
from unidecode import unidecode # Používám pro získání ID odkazu (ještě je to někde po někom zakomentované)
|
||||||
|
|
||||||
from polymorphic.models import PolymorphicModel
|
from polymorphic.models import PolymorphicModel
|
||||||
|
|
||||||
|
@ -620,7 +620,7 @@ class Problem(SeminarModelBase,PolymorphicModel):
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
# Název
|
# Název
|
||||||
nazev = models.CharField('název', max_length=256)
|
nazev = models.CharField('název', max_length=256) # Zveřejnitelný na stránky
|
||||||
|
|
||||||
# Problém má podproblémy
|
# Problém má podproblémy
|
||||||
nadproblem = models.ForeignKey('self', verbose_name='nadřazený problém',
|
nadproblem = models.ForeignKey('self', verbose_name='nadřazený problém',
|
||||||
|
@ -1243,7 +1243,7 @@ class TreeNode(PolymorphicModel):
|
||||||
nazev = models.TextField("název tohoto node",
|
nazev = models.TextField("název tohoto node",
|
||||||
help_text = "Tento název se zobrazuje v nabídkách pro výběr vhodného TreeNode",
|
help_text = "Tento název se zobrazuje v nabídkách pro výběr vhodného TreeNode",
|
||||||
blank=False,
|
blank=False,
|
||||||
null=True)
|
null=True) # Nezveřejnitelný název na stránky - pouze do adminu
|
||||||
zajimave = models.BooleanField(default = False,
|
zajimave = models.BooleanField(default = False,
|
||||||
verbose_name = "Zajímavé",
|
verbose_name = "Zajímavé",
|
||||||
help_text = "Zobrazí se daná věc na rozcestníku témátek")
|
help_text = "Zobrazí se daná věc na rozcestníku témátek")
|
||||||
|
@ -1258,8 +1258,25 @@ class TreeNode(PolymorphicModel):
|
||||||
if self.succ:
|
if self.succ:
|
||||||
self.succ.print_tree(indent=indent)
|
self.succ.print_tree(indent=indent)
|
||||||
|
|
||||||
def getOdkaz(self):
|
def getOdkazStr(self): # String na rozcestník
|
||||||
return self.first_child.getOdkaz()
|
return self.first_child.getOdkazStr()
|
||||||
|
|
||||||
|
def getOdkaz(self): # ID HTML tagu, na který se bude scrollovat #{{self.getOdkaz}}
|
||||||
|
# Jsem si vědom, že tu potenciálně vznikají kolize.
|
||||||
|
# Přijdou mi natolik nepravděpodobné, že je neřeším
|
||||||
|
# Chtěl jsem ale hezké odkazy
|
||||||
|
string = unidecode(self.getOdkazStr())
|
||||||
|
returnVal = ""
|
||||||
|
i = 0
|
||||||
|
while len(returnVal) < 16: # Max 15 znaků
|
||||||
|
if i == len(string):
|
||||||
|
break
|
||||||
|
if string[i] == " ":
|
||||||
|
returnVal += "-"
|
||||||
|
if string[i].isalnum():
|
||||||
|
returnVal += string[i].lower()
|
||||||
|
i += 1
|
||||||
|
return returnVal
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
if self.nazev:
|
if self.nazev:
|
||||||
|
@ -1296,7 +1313,7 @@ class CisloNode(TreeNode):
|
||||||
def aktualizuj_nazev(self):
|
def aktualizuj_nazev(self):
|
||||||
self.nazev = "CisloNode: "+str(self.cislo)
|
self.nazev = "CisloNode: "+str(self.cislo)
|
||||||
|
|
||||||
def getOdkaz(self):
|
def getOdkazStr(self):
|
||||||
return "Číslo " + str(self.cislo)
|
return "Číslo " + str(self.cislo)
|
||||||
|
|
||||||
class MezicisloNode(TreeNode):
|
class MezicisloNode(TreeNode):
|
||||||
|
@ -1320,7 +1337,7 @@ class MezicisloNode(TreeNode):
|
||||||
else:
|
else:
|
||||||
print("!!!!! Nějaké neidentifikované mezičíslo !!!!!")
|
print("!!!!! Nějaké neidentifikované mezičíslo !!!!!")
|
||||||
self.nazev = "MezicisloNode: Neidentifikovatelné mezičíslo!"
|
self.nazev = "MezicisloNode: Neidentifikovatelné mezičíslo!"
|
||||||
def getOdkaz(self):
|
def getOdkazStr(self):
|
||||||
return "Obsah dostupný pouze na webu"
|
return "Obsah dostupný pouze na webu"
|
||||||
|
|
||||||
class TemaVCisleNode(TreeNode):
|
class TemaVCisleNode(TreeNode):
|
||||||
|
@ -1336,7 +1353,7 @@ class TemaVCisleNode(TreeNode):
|
||||||
def aktualizuj_nazev(self):
|
def aktualizuj_nazev(self):
|
||||||
self.nazev = "TemaVCisleNode: "+str(self.tema)
|
self.nazev = "TemaVCisleNode: "+str(self.tema)
|
||||||
|
|
||||||
def getOdkaz(self):
|
def getOdkazStr(self):
|
||||||
return str(self.tema)
|
return str(self.tema)
|
||||||
|
|
||||||
class KonferaNode(TreeNode):
|
class KonferaNode(TreeNode):
|
||||||
|
@ -1367,7 +1384,7 @@ class ClanekNode(TreeNode):
|
||||||
def aktualizuj_nazev(self):
|
def aktualizuj_nazev(self):
|
||||||
self.nazev = "ClanekNode: "+str(self.clanek)
|
self.nazev = "ClanekNode: "+str(self.clanek)
|
||||||
|
|
||||||
def getOdkaz(self):
|
def getOdkazStr(self):
|
||||||
return str(self.clanek)
|
return str(self.clanek)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1385,7 +1402,7 @@ class UlohaZadaniNode(TreeNode):
|
||||||
def aktualizuj_nazev(self):
|
def aktualizuj_nazev(self):
|
||||||
self.nazev = "UlohaZadaniNode: "+str(self.uloha)
|
self.nazev = "UlohaZadaniNode: "+str(self.uloha)
|
||||||
|
|
||||||
def getOdkaz(self):
|
def getOdkazStr(self):
|
||||||
return str(self.uloha)
|
return str(self.uloha)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1416,7 +1433,7 @@ class UlohaVzorakNode(TreeNode):
|
||||||
def aktualizuj_nazev(self):
|
def aktualizuj_nazev(self):
|
||||||
self.nazev = "UlohaVzorakNode: "+str(self.uloha)
|
self.nazev = "UlohaVzorakNode: "+str(self.uloha)
|
||||||
|
|
||||||
def getOdkaz(self):
|
def getOdkazStr(self):
|
||||||
return str(self.uloha)
|
return str(self.uloha)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1432,7 +1449,7 @@ class TextNode(TreeNode):
|
||||||
def aktualizuj_nazev(self):
|
def aktualizuj_nazev(self):
|
||||||
self.nazev = "TextNode: "+str(self.text)
|
self.nazev = "TextNode: "+str(self.text)
|
||||||
|
|
||||||
def getOdkaz(self):
|
def getOdkazStr(self):
|
||||||
return str(self.text)
|
return str(self.text)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{% for tematko in tematka %}
|
{% for tematko in tematka %}
|
||||||
<h1>TEMA</h1>
|
<h1>{{tematko.nazev}}</h1>
|
||||||
<p>{{tematko.abstrakt}}</p>
|
<p>{{tematko.abstrakt}}</p>
|
||||||
<ul>
|
<ul>
|
||||||
{% for cislo in tematko.cisla %}
|
{% for cislo in tematko.cisla %}
|
||||||
<li>{{cislo.0}}</li>
|
<li>{{cislo.0.0}} -> /{{tematko.kod}}/#{{cislo.0.1}}</li>
|
||||||
<ul>
|
<ul>
|
||||||
{% for odkaz in cislo.1 %}
|
{% for odkaz in cislo.1 %}
|
||||||
<li>{{odkaz}}</li>
|
<li>{{odkaz.0}} -> /{{tematko.kod}}/#{{odkaz.1}}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -8,8 +8,8 @@ from django.contrib.auth import views as auth_views
|
||||||
staff_member_required = user_passes_test(lambda u: u.is_staff)
|
staff_member_required = user_passes_test(lambda u: u.is_staff)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# TEMP DEV
|
path('tematka/', views.TemataRozcestnikView),
|
||||||
path('dev_tematka/', views.TemataRozcestnikView),
|
path('tematko/<int:tematko>/', views.TematkoView),
|
||||||
|
|
||||||
# REDIRECTy
|
# REDIRECTy
|
||||||
path('jak-resit/', RedirectView.as_view(url='/co-je-MaM/jak-resit/')),
|
path('jak-resit/', RedirectView.as_view(url='/co-je-MaM/jak-resit/')),
|
||||||
|
|
|
@ -121,6 +121,8 @@ def vytahniZLesaSeznam(tematko, koren, pouze_zajimave=False):
|
||||||
returnVal.append((wn, wd))
|
returnVal.append((wn, wd))
|
||||||
return returnVal
|
return returnVal
|
||||||
|
|
||||||
|
def TematkoView(request):
|
||||||
|
neco
|
||||||
|
|
||||||
def TemataRozcestnikView(request):
|
def TemataRozcestnikView(request):
|
||||||
print("=============================================")
|
print("=============================================")
|
||||||
|
@ -130,25 +132,27 @@ def TemataRozcestnikView(request):
|
||||||
for tematko_object in tematka_objects:
|
for tematko_object in tematka_objects:
|
||||||
print("AKTUALNI TEMATKO")
|
print("AKTUALNI TEMATKO")
|
||||||
print(tematko_object.id)
|
print(tematko_object.id)
|
||||||
odkazy = vytahniZLesaSeznam(tematko_object, nastaveni.aktualni_rocnik().rocniknode, pouze_zajimave = True)
|
odkazy = vytahniZLesaSeznam(tematko_object, nastaveni.aktualni_rocnik().rocniknode, pouze_zajimave = True) #Odkazy jsou tuply (node, depth) v listu
|
||||||
print(odkazy)
|
print(odkazy)
|
||||||
cisla = []
|
cisla = [] # List tuplů (nazev cisla, list odkazů)
|
||||||
vcisle = []
|
vcisle = []
|
||||||
cislo = None
|
cislo = None
|
||||||
for odkaz in odkazy:
|
for odkaz in odkazy:
|
||||||
if odkaz[1] == 0:
|
if odkaz[1] == 0:
|
||||||
if cislo != None:
|
if cislo != None:
|
||||||
cisla.append((cislo, vcisle))
|
cisla.append((cislo, vcisle))
|
||||||
cislo = odkaz[0].getOdkaz()
|
cislo = (odkaz[0].getOdkazStr(), odkaz[0].getOdkaz())
|
||||||
vcisle = []
|
vcisle = []
|
||||||
else:
|
else:
|
||||||
print(odkaz[0].getOdkaz())
|
print(odkaz[0].getOdkaz())
|
||||||
vcisle.append(odkaz[0].getOdkaz())
|
vcisle.append((odkaz[0].getOdkazStr(), odkaz[0].getOdkaz()))
|
||||||
if cislo != None:
|
if cislo != None:
|
||||||
cisla.append((cislo, vcisle))
|
cisla.append((cislo, vcisle))
|
||||||
|
|
||||||
print(cisla)
|
print(cisla)
|
||||||
tematka.append({
|
tematka.append({
|
||||||
|
"kod" : tematko_object.kod,
|
||||||
|
"nazev" : tematko_object.nazev,
|
||||||
"abstrakt" : tematko_object.abstrakt,
|
"abstrakt" : tematko_object.abstrakt,
|
||||||
"obrazek": tematko_object.obrazek,
|
"obrazek": tematko_object.obrazek,
|
||||||
"cisla" : cisla
|
"cisla" : cisla
|
||||||
|
|
Loading…
Reference in a new issue