page-relations.py - Vorwärts-Rückwärts-Beziehungen

Vorwärts-Rückwärts-Beziehungen durch numerische Suffixe

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

Copyright © 2016 Uwe Ritzmann - Erstellt mit Pelican, Python und Skeleton.