aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views/wiki/special/all_pages.py
blob: d2e02a723de44d2b8da3ca71c0fad132753168eb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from pysite.base_route import RouteView
from pysite.mixins import DBMixin


class PageView(RouteView, DBMixin):
    path = "/special/all_pages"
    name = "special.all_pages"
    table_name = "wiki"

    def get(self):
        pages = self.db.pluck(self.table_name, "title", "slug")
        pages = sorted(pages, key=lambda d: d.get("title", "No Title"))

        letters = {}

        for page in pages:
            if "title" not in page:
                page["title"] = "No Title"

            letter = page["title"][0].upper()

            if letter not in letters:
                letters[letter] = []

            letters[letter].append(page)

        return self.render("wiki/special_all.html", letters=letters)