From 39c3ea3a06f12d2e156d4959278bee7b093494da Mon Sep 17 00:00:00 2001 From: Alex Lardner Date: Thu, 6 Aug 2026 21:21:01 -0700 Subject: [PATCH] add page navigation --- README.md | 1 - blahblah/bbdb.py | 2 +- blahblah/render.py | 55 +++++++++++++++++---- blahblah/templates/roll_template.html.jinja | 3 ++ 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index ea5efa2..a26889c 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,5 @@ This is a very early form of the software, heavily tailored to my site, just to - More generic templating options, provide CSS - Expand content generation to entire site using markdown, templating, and CSS - CSS configuration tool -- Actually be able to navigate past one page (seriously, this thing barely works yet) - Navigation by dates diff --git a/blahblah/bbdb.py b/blahblah/bbdb.py index d881ee6..4a92add 100644 --- a/blahblah/bbdb.py +++ b/blahblah/bbdb.py @@ -18,7 +18,7 @@ def initBlog(db_file): def newPost(db, title, body): now = datetime.datetime.now() - time = int(now.timestamp() * 1000) + time = int(now.timestamp()) db.execute( "INSERT INTO posts (title, body, timestamp) VALUES (?, ?, ?)", (title, body, time) diff --git a/blahblah/render.py b/blahblah/render.py index 134ed6f..d8d0da9 100644 --- a/blahblah/render.py +++ b/blahblah/render.py @@ -1,5 +1,6 @@ import markdown import toml +import math from jinja2 import Environment, PackageLoader from blahblah import bbdb from datetime import datetime @@ -20,10 +21,16 @@ except: sys.exit() def generateBodies(db): + pageCount = 1 postCount = 0 + perPage = config['formatting']['post_per_page'] + documentRoot = config['server']['document_root'] + copyrightHolder = config['server']['copyright_holder'] blogRoll = [] blobStack = "" for p in bbdb.getAllPosts(db): + postURLIntro = '' + if p["title"] != None: newPost = '
' newPost = newPost + "

" + p["title"] + "


" @@ -33,30 +40,58 @@ def generateBodies(db): bodyText = p["body"] if len(bodyText) > 512: - formattedBody = bodyText[0:509] + '...' + formattedBody = bodyText[0:512] + postURLIntro + '...[click for full post]' + '
' else: formattedBody = bodyText formattedBody = markdown.markdown(formattedBody) bodyText = markdown.markdown(bodyText) + ts = p["timestamp"] - with open("./blog/posts/" + str(p["id"]) + ".html", "w") as f: + with open("./blog/posts/" + str(p["timestamp"]) + ".html", "w") as f: singlePost = newPost + bodyText + singlePost = singlePost + '

' + singlePost = singlePost + datetime.fromtimestamp(ts).strftime('%B %-d, %Y') + '

' singlePost = singlePost + '
' - f.write(postTemplate.render(webRoot=config['server']['document_root'], blogContent=singlePost, siteCopyright=config['server']['copyright_holder'])) + f.write(postTemplate.render(webRoot=documentRoot, blogContent=singlePost, siteCopyright=copyrightHolder)) - ts = p["timestamp"] / 1000 newPost = newPost + formattedBody newPost = newPost + '

' + datetime.fromtimestamp(ts).strftime('%B %-d, %Y ') - newPost = newPost + '' - newPost = newPost + 'link to full post

' + newPost = newPost + postURLIntro + newPost = newPost + 'permalink

' blogRoll.append(newPost) postCount += 1 - if postCount < config['formatting']['post_per_page']: - for p in blogRoll: - blobStack = blobStack + p + pageCount = math.ceil(postCount / perPage) + + for i in range(1, pageCount + 1): + counter = 0 + blobStack = "" + while counter < perPage and len(blogRoll) > 0: + blobStack = blobStack + blogRoll.pop(0) + counter += 1 + + if i > 1: + prev = '

Page ' + str(i-1) + '

' + else: + prev = " " + + cur = '

Page ' + str(i) + '

' + + if i == pageCount: + following = " " + else: + following = '

Page ' + str(i+1) + '

' + + with open("./blog/page" + str(i) + ".html", "w") as f: + f.write(rollTemplate.render(prevPage=prev, curPage=cur, nextPage=following, webRoot=documentRoot, blogContent=blobStack, siteCopyright=copyrightHolder)) + f.close() with open("./blog/index.html", "w") as f: - f.write(rollTemplate.render(webRoot=config['server']['document_root'], blogContent=blobStack, siteCopyright=config['server']['copyright_holder'])) + with open("./blog/page1.html", "r") as g: + for line in g: + f.write(line) + g.close() + f.close() + diff --git a/blahblah/templates/roll_template.html.jinja b/blahblah/templates/roll_template.html.jinja index 780529b..06d5833 100644 --- a/blahblah/templates/roll_template.html.jinja +++ b/blahblah/templates/roll_template.html.jinja @@ -15,6 +15,9 @@
{{ blogContent }} +