98 lines
3.4 KiB
Python
98 lines
3.4 KiB
Python
import markdown
|
|
import toml
|
|
import math
|
|
from jinja2 import Environment, PackageLoader
|
|
from blahblah import bbdb
|
|
from datetime import datetime
|
|
|
|
env = Environment( loader = PackageLoader("blahblah") )
|
|
|
|
rollTemplate = env.get_template("roll_template.html.jinja")
|
|
postTemplate = env.get_template("post_template.html.jinja")
|
|
|
|
try:
|
|
with open('config.toml', 'r') as f:
|
|
config = toml.load(f)
|
|
except FileNotFoundError:
|
|
print('Error: config.toml not found (try renaming example.toml?). Exiting...')
|
|
sys.exit()
|
|
except:
|
|
print('An unknown error occurred. Exiting...')
|
|
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 = '<a href="' + documentRoot + "/blog/posts/" + str(p["timestamp"]) + '.html">'
|
|
|
|
if p["title"] != None:
|
|
newPost = '<div class="blobs mainbox blogpost">'
|
|
newPost = newPost + "<h2>" + p["title"] + "</h2><br>"
|
|
else:
|
|
newPost = '<div class="blobs mainbox blogpost micro">'
|
|
|
|
bodyText = p["body"]
|
|
|
|
if len(bodyText) > 512:
|
|
formattedBody = bodyText[0:512] + postURLIntro + '...[click for full post]' + '</a>'
|
|
else:
|
|
formattedBody = bodyText
|
|
|
|
formattedBody = markdown.markdown(formattedBody)
|
|
bodyText = markdown.markdown(bodyText)
|
|
ts = p["timestamp"]
|
|
|
|
with open("./blog/posts/" + str(p["timestamp"]) + ".html", "w") as f:
|
|
singlePost = newPost + bodyText
|
|
singlePost = singlePost + '<p style="font-size:small;text-align:right">'
|
|
singlePost = singlePost + datetime.fromtimestamp(ts).strftime('%B %-d, %Y') + '</p>'
|
|
singlePost = singlePost + '</div>'
|
|
f.write(postTemplate.render(webRoot=documentRoot, blogContent=singlePost, siteCopyright=copyrightHolder))
|
|
|
|
newPost = newPost + formattedBody
|
|
newPost = newPost + '<p style="font-size:small;text-align:right">' + datetime.fromtimestamp(ts).strftime('%B %-d, %Y ')
|
|
newPost = newPost + postURLIntro
|
|
newPost = newPost + 'permalink</a></p></div>'
|
|
blogRoll.append(newPost)
|
|
|
|
postCount += 1
|
|
|
|
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 = '<a href="' + documentRoot + '/page' + str(i-1) + '.html"><p>Page ' + str(i-1) + '</p></a>'
|
|
else:
|
|
prev = " "
|
|
|
|
cur = '<p>Page ' + str(i) + '</p>'
|
|
|
|
if i == pageCount:
|
|
following = " "
|
|
else:
|
|
following = '<a href="' + documentRoot + '/page' + str(i+1) + '.html"><p>Page ' + str(i+1) + '</p></a>'
|
|
|
|
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:
|
|
with open("./blog/page1.html", "r") as g:
|
|
for line in g:
|
|
f.write(line)
|
|
g.close()
|
|
f.close()
|
|
|