Wenn der slug
ohne numerischen Suffix übereinstimmt, die Seiten ungleich sind, die gleiche Sprache haben und
der numerische Suffix genau um 1 differiert, dann werden die prequel und sequel Felder gesetzt.
Die erlaubt eine seitliche Navigation, wie auf dieser Seite zu sehen ist.
# set prequel and sequel for pages below toplevel
for page in _all_pages():
if page.parent != None:
page_stripped_slug = page.slug.rstrip('0123456789')
if len(page.slug) != len(page_stripped_slug):
for sibbling_page in page.parent.children:
sibbling_stripped_slug = sibbling_page.slug.rstrip('0123456789')
if len(sibbling_page.slug) != len(sibbling_stripped_slug):
if sibbling_page != page and sibbling_page.lang == page.lang and sibbling_stripped_slug == page_stripped_slug:
page_number = int(page.slug[len(page_stripped_slug):].lstrip('0'))
sibbling_number = int(sibbling_page.slug[len(sibbling_stripped_slug):].lstrip('0'))
if page_number + 1 == sibbling_number:
page.sequel = sibbling_page
sibbling_page.prequel = page
Schließlich wird die Liste der Vorgänger und der Nachfolger berechnet. Damit sind Sprünge zum Anfang oder Ende oder +/-2 einfacher möglich.
# set list of prequels and sequels
for page in _all_pages():
a_prequel = page.prequel
while a_prequel:
page.prequels.insert(0, a_prequel)
a_prequel = a_prequel.prequel
a_sequel = page.sequel
while a_sequel:
page.sequels.insert(0, a_sequel)
a_sequel = a_sequel.sequel