basic pagination working
This commit is contained in:
parent
ccd4628b4a
commit
e37c9dfb27
57
microblog.py
57
microblog.py
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import os
|
||||||
|
|
||||||
def make_post(num, timestamp, email, msg):
|
def make_post(num, timestamp, email, msg):
|
||||||
# used <a class> for name and email but it's not actually needed.
|
# used <a class> for name and email but it's not actually needed.
|
||||||
@ -127,6 +127,48 @@ def make_tagcloud(d):
|
|||||||
output.append(fmt % (key, d[key]))
|
output.append(fmt % (key, d[key]))
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
class Paginator:
|
||||||
|
def __init__(self, x, y, loc="./pages"):
|
||||||
|
self.TOTAL_POSTS = x
|
||||||
|
self.PPP = y # posts per page
|
||||||
|
self.TOTAL_PAGES = int(x/y)
|
||||||
|
if self.TOTAL_PAGES > 0:
|
||||||
|
self.SUBDIR = loc
|
||||||
|
if not os.path.exists(loc):
|
||||||
|
os.makedirs(loc)
|
||||||
|
pass
|
||||||
|
|
||||||
|
def toc(self, n=None, page=None): #style 1
|
||||||
|
if self.TOTAL_PAGES < 1 or (n == None and page == None):
|
||||||
|
return "[no pages]"
|
||||||
|
# For page 'n' do not create an anchor tag
|
||||||
|
fmt = "<a href=\"%s/%s\">[%i]</a>" #(self.subdir, page, page number)
|
||||||
|
anchors = []
|
||||||
|
for i in range(self.TOTAL_PAGES):
|
||||||
|
if i != n:
|
||||||
|
anchors.append(fmt % (self.SUBDIR, page, i))
|
||||||
|
else:
|
||||||
|
anchors.append("<b>[%i]</b>" % i)
|
||||||
|
return "\n".join(anchors)
|
||||||
|
|
||||||
|
def singlepage(self, template, tagcloud, timeline):
|
||||||
|
tc = "\n".join(tagcloud)
|
||||||
|
tl = "\n\n".join(timeline)
|
||||||
|
return (template % (self.TOTAL_POSTS, tc, tl))
|
||||||
|
|
||||||
|
def paginate(self, template, tagcloud, timeline):
|
||||||
|
outfile = self.SUBDIR + "/%i.html"
|
||||||
|
timeline.reverse() # reorder from oldest to newest
|
||||||
|
for i in range(self.TOTAL_PAGES):
|
||||||
|
with open(outfile % i, 'w') as fout:
|
||||||
|
prev = self.PPP * i
|
||||||
|
curr = self.PPP * (i+1)
|
||||||
|
sliced = timeline[prev:curr]
|
||||||
|
sliced.reverse()
|
||||||
|
fout.write(
|
||||||
|
self.singlepage(template, tagcloud, sliced))
|
||||||
|
pass
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
def get_args():
|
def get_args():
|
||||||
argc = len(sys.argv)
|
argc = len(sys.argv)
|
||||||
@ -147,7 +189,18 @@ if __name__ == "__main__":
|
|||||||
tl, tc = make_timeline(content, email)
|
tl, tc = make_timeline(content, email)
|
||||||
tcl = make_tagcloud(tc)
|
tcl = make_tagcloud(tc)
|
||||||
count = len(tl)
|
count = len(tl)
|
||||||
|
html = ""
|
||||||
with open(template,'r') as f:
|
with open(template,'r') as f:
|
||||||
html = f.read()
|
html = f.read()
|
||||||
print(html % (count, "\n".join(tcl), "\n\n".join(tl)))
|
#print(html % (count, "\n".join(tcl), "\n\n".join(tl)))
|
||||||
|
count = len(tl)
|
||||||
|
posts_per_page = 5
|
||||||
|
pagectrl = Paginator(count, posts_per_page)
|
||||||
|
if count <= posts_per_page:
|
||||||
|
print(pagectrl.paginate(html, tcl, timeline))
|
||||||
|
else:
|
||||||
|
latest = tl[:posts_per_page]
|
||||||
|
print(pagectrl.singlepage(html, tcl, latest))
|
||||||
|
pagectrl.paginate(html, tcl, tl)
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user