|
@ -92,8 +92,8 @@ def seznam_problemu(): |
|
|
if r.osoba.datum_narozeni and ( |
|
|
if r.osoba.datum_narozeni and ( |
|
|
r.osoba.datum_narozeni.year < 1970 or r.osoba.datum_narozeni.year > datetime.date.today().year - 12): |
|
|
r.osoba.datum_narozeni.year < 1970 or r.osoba.datum_narozeni.year > datetime.date.today().year - 12): |
|
|
prb(m.Resitel, 'Podezřelé datum narození', [r]) |
|
|
prb(m.Resitel, 'Podezřelé datum narození', [r]) |
|
|
# if not r.email: |
|
|
# if not r.email: |
|
|
# prb(Resitel, u'Neznámý email', [r]) |
|
|
# prb(Resitel, u'Neznámý email', [r]) |
|
|
|
|
|
|
|
|
## Kontroly konzistence databáze a TreeNodů |
|
|
## Kontroly konzistence databáze a TreeNodů |
|
|
|
|
|
|
|
@ -104,7 +104,7 @@ def seznam_problemu(): |
|
|
if (reseni.count() != 1): |
|
|
if (reseni.count() != 1): |
|
|
raise ValueError("Článek k sobě má nejedno řešení!") |
|
|
raise ValueError("Článek k sobě má nejedno řešení!") |
|
|
r = reseni.first() |
|
|
r = reseni.first() |
|
|
clanek_node = r.text_cely # vazba na ReseniNode z Reseni |
|
|
clanek_node = r.text_cely # vazba na ReseniNode z Reseni |
|
|
# content type je věc pomáhající rozeznávat různé typy objektů v django-polymorphic |
|
|
# content type je věc pomáhající rozeznávat různé typy objektů v django-polymorphic |
|
|
# protože isinstance vrátí vždy jen TreeNode |
|
|
# protože isinstance vrátí vždy jen TreeNode |
|
|
# https://django-polymorphic.readthedocs.io/en/stable/migrating.html |
|
|
# https://django-polymorphic.readthedocs.io/en/stable/migrating.html |
|
@ -112,13 +112,13 @@ def seznam_problemu(): |
|
|
node = clanek_node |
|
|
node = clanek_node |
|
|
while node is not None: |
|
|
while node is not None: |
|
|
node_ct = node.polymorphic_ctype |
|
|
node_ct = node.polymorphic_ctype |
|
|
if node_ct == cislonode_ct: # dostali jsme se k CisloNode |
|
|
if node_ct == cislonode_ct: # dostali jsme se k CisloNode |
|
|
# zkontrolujeme, že stromové číslo odpovídá atributu |
|
|
# zkontrolujeme, že stromové číslo odpovídá atributu |
|
|
# .cislonode je opačná vazba k treenode_ptr, abychom z TreeNode dostali |
|
|
# .cislonode je opačná vazba k treenode_ptr, abychom z TreeNode dostali |
|
|
# CisloNode |
|
|
# CisloNode |
|
|
if clanek.cislo != node.cislonode.cislo: |
|
|
if clanek.cislo != node.cislonode.cislo: |
|
|
prb(m.Clanek, "Číslo otištění uložené u článku nesedí s " |
|
|
prb(m.Clanek, "Číslo otištění uložené u článku nesedí s " |
|
|
"číslem otištění podle struktury treenodů.", [clanek]) |
|
|
"číslem otištění podle struktury treenodů.", [clanek]) |
|
|
break |
|
|
break |
|
|
node = t.get_parent(node) |
|
|
node = t.get_parent(node) |
|
|
|
|
|
|
|
@ -184,5 +184,4 @@ def aktivniResitele(cislo, pouze_letosni=False): |
|
|
return resi_v_rocniku(letos, cislo) |
|
|
return resi_v_rocniku(letos, cislo) |
|
|
else: |
|
|
else: |
|
|
# spojíme querysety s řešiteli loni a letos do daného čísla |
|
|
# spojíme querysety s řešiteli loni a letos do daného čísla |
|
|
|
|
|
|
|
|
return (resi_v_rocniku(loni) | resi_v_rocniku(letos, cislo)).distinct() |
|
|
return (resi_v_rocniku(loni) | resi_v_rocniku(letos, cislo)).distinct() |
|
|