From 3bdffd9cfb61c8a8e75c472765fbb738a67c6ca0 Mon Sep 17 00:00:00 2001 From: Gareth Coles Date: Wed, 2 May 2018 13:28:51 +0100 Subject: Add special pages and an "all pages" special page --- pysite/views/wiki/special/all_pages.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 pysite/views/wiki/special/all_pages.py (limited to 'pysite/views/wiki/special/all_pages.py') diff --git a/pysite/views/wiki/special/all_pages.py b/pysite/views/wiki/special/all_pages.py new file mode 100644 index 00000000..2d5376aa --- /dev/null +++ b/pysite/views/wiki/special/all_pages.py @@ -0,0 +1,26 @@ +from operator import itemgetter + +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=itemgetter("title")) + + letters = {} + + for page in pages: + 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) -- cgit v1.2.3 From 9d11f558395f0450fbbe1e8d323917dff3ebe167 Mon Sep 17 00:00:00 2001 From: Gareth Coles Date: Wed, 2 May 2018 13:37:49 +0100 Subject: [All Pages] Account for pages without a title when sorting --- pysite/views/wiki/special/all_pages.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'pysite/views/wiki/special/all_pages.py') diff --git a/pysite/views/wiki/special/all_pages.py b/pysite/views/wiki/special/all_pages.py index 2d5376aa..1305fc29 100644 --- a/pysite/views/wiki/special/all_pages.py +++ b/pysite/views/wiki/special/all_pages.py @@ -1,5 +1,3 @@ -from operator import itemgetter - from pysite.base_route import RouteView from pysite.mixins import DBMixin @@ -11,7 +9,7 @@ class PageView(RouteView, DBMixin): def get(self): pages = self.db.pluck(self.table_name, "title", "slug") - pages = sorted(pages, key=itemgetter("title")) + pages = sorted(pages, key=lambda d: d.get("title", "No Title")) letters = {} -- cgit v1.2.3 From 4062b111c771225a7185af700722490a0da9067b Mon Sep 17 00:00:00 2001 From: Gareth Coles Date: Wed, 2 May 2018 13:44:33 +0100 Subject: [All Pages] Fix the other half of that dumb --- pysite/views/wiki/special/all_pages.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'pysite/views/wiki/special/all_pages.py') diff --git a/pysite/views/wiki/special/all_pages.py b/pysite/views/wiki/special/all_pages.py index 1305fc29..d2e02a72 100644 --- a/pysite/views/wiki/special/all_pages.py +++ b/pysite/views/wiki/special/all_pages.py @@ -14,6 +14,9 @@ class PageView(RouteView, DBMixin): letters = {} for page in pages: + if "title" not in page: + page["title"] = "No Title" + letter = page["title"][0].upper() if letter not in letters: -- cgit v1.2.3