diff --git a/src/posts.py b/src/posts.py index 1200fc1..bea5285 100644 --- a/src/posts.py +++ b/src/posts.py @@ -2,7 +2,7 @@ import couchdb import mistune -import json +from json import dumps from werkzeug.local import Local, LocalProxy, LocalManager from couchdb.http import ResourceConflict, ResourceNotFound @@ -145,10 +145,12 @@ class Posts: group=True) ]))) - def browse(self, count, skip, categories=[]): - return jsonify(self.db.list( - "blogPosts/categories", - "blogPosts/format", - count=count, - skip=skip, - categories=json.dumps(categories))[1].get("results", [])) + def browse(self, count, skip, categories=[], json=True): + result = self.db.list( + "blogPosts/categories", + "blogPosts/format", + count=count, + skip=skip, + categories=dumps(categories))[1].get("results", []) + + return jsonify(result) if json else result diff --git a/src/scripts/app.tag b/src/scripts/app.tag index d0a2fd0..a058361 100644 --- a/src/scripts/app.tag +++ b/src/scripts/app.tag @@ -83,6 +83,11 @@ if={active.get("links")} > + + diff --git a/src/templates/index.html b/src/templates/index.html index f1a918c..82898a3 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -23,6 +23,9 @@ window.addEventListener("load", function() { window.riot.mount("app", { + category_filter: "{{ quote(category_filter) }}", + start: "{{ start }}", + results: "{{ quote(results) }}", categories: "{{ quote(categories) }}", links : "{{ quote(links) }}", page : "{{ page }}", diff --git a/src/website.py b/src/website.py index ecd14f9..51868d8 100755 --- a/src/website.py +++ b/src/website.py @@ -69,10 +69,13 @@ def NeverWhere(configfile=None): postcontent["title"] = initial_post["title"] return { "quote" : quote, + "start" : 0, + "results" : dumps([]), "postid" : initial_post["_id"], "postcontent" : postcontent, "links" : dumps([]), "projects" : dumps([]), + "category_filter" : dumps([]), "categories" : cacheit("categories", lambda : dumps(posts.categories())) } @@ -142,6 +145,23 @@ def NeverWhere(configfile=None): postcontent=post_content) + @app.route("/blog/browse/") + def browse(start): + results = posts.browse(10, start*10, categories=[], json=False) + return render_template("index.html", + page="browse", + start=start, + results=dumps(results)) + + @app.route("/blog/browse//") + def browse_categories(category, start): + results = posts.browse(10, start*10, categories=[category], json=False) + return render_template("index.html", + page="browse", + start=start, + category_filter=dumps([category]), + results=dumps(results)) + @cache.cached(timeout=50) @app.route("/blog/switchpost//") def getpostid(pid, category): @@ -168,7 +188,7 @@ def NeverWhere(configfile=None): # get the first post of a given category @cache.cached(timeout=50) @app.route("/blog/getpost/") - def getbycategory(category): + def bycategory(category): return posts.getbycategory(category) # get the id of every post @@ -226,12 +246,12 @@ def NeverWhere(configfile=None): def projects(): return jsonify(loads(cacheit("projects", getProjects))) - @app.route("/blog/browse/") - def browse(start): + @app.route("/blog/getbrowse/") + def getbrowse(start): return posts.browse(10, start*10, categories=[]) - @app.route("/blog/browse//") - def bycategory(category, start): + @app.route("/blog/getbrowse//") + def getbycategory(category, start): return posts.browse(10, start*10, categories=[category]) return app