Mercurial > hg > rlgallery-misc
annotate py/rlgnotes @ 74:900da50ee11c
Merge lighttpd configuration into one include file.
The lighttpd configuration was previously spread across several files
which were intended to overwrite the defaults. They often became
outdated.
Now all customization is in lighttpd/rlgallery.conf, which should be
included at the end of whatever main lighttpd configuration file is in
use. It should require minimal updates for new lighttpd versions or
distribution changes.
author | John "Elwin" Edwards |
---|---|
date | Wed, 28 Dec 2016 13:12:04 -0500 |
parents | 5b4ff5680037 |
children | d417016bbf73 |
rev | line source |
---|---|
61 | 1 #!/usr/bin/python3 |
2 | |
3 import os | |
4 import sys | |
5 import datetime | |
6 import rlgall | |
7 import pytz | |
8 | |
9 navbar = '<div class="nav"><a href="/">rlgallery.org</a> -> \ | |
10 <a href="/notes/">Notes</a> -> {0}</div>' | |
11 | |
12 rsshead = """<?xml version="1.0" encoding="UTF-8"?> | |
13 <rss version="2.0"> | |
14 <channel> | |
15 <title>Roguelike Gallery</title> | |
16 <description>News and notes from the Roguelike Gallery.</description> | |
17 <link>http://rlgallery.org/notes/</link> | |
18 """ | |
19 | |
20 indexintro = """<p>The Gallery's blog, with news and thoughts on roguelike | |
21 games. A comment system is planned but does not exist yet. There is an | |
22 <a href="feed.rss">RSS feed</a> for the benefit of robots.</p> | |
23 """ | |
24 | |
25 phead = rlgall.phead.replace("/scoring/scores.css", "notes.css") | |
26 | |
27 ptitle = '<h2 class="pagetitle">{0}</h2>\n' | |
28 | |
29 posthead = '<h3 class="posttitle">{0}</h2>\n' | |
30 | |
31 datediv = '<div class="datehead">{0}</div>\n' | |
32 | |
33 def noteurl(tag): | |
34 return "http://rlgallery.org/notes/" + tag + ".html" | |
35 | |
36 def itementry(tagname, value): | |
37 return " <{0}>{1}</{0}>\n".format(tagname, value) | |
38 | |
39 def fmtdate(dt): | |
40 if dt == None: | |
41 dt = datetime.datetime.now(pytz.utc) | |
42 return dt.strftime("%a, %d %b %Y %H:%M:%S %z") | |
43 | |
44 def qdetag(istr): | |
45 nstart = istr.find('>') | |
46 if nstart < 0: | |
47 return istr | |
48 mstr = istr[nstart + 1:] | |
49 nend = mstr.find('<') | |
50 if nend < 0: | |
51 return mstr | |
52 return mstr[:nend] | |
53 | |
54 def mkindexfile(postdata, notedir): | |
55 indexfile = open(notedir + "/index.html", "w") | |
56 postdata.sort(key=lambda m: m[2], reverse=True) | |
57 indexfile.write(phead.format("Roguelike Gallery Notes")) | |
58 indexfile.write('<body>\n<h1>Roguelike Gallery Notes</h1>\n') | |
59 indexfile.write(rlgall.navtop.format("Notes")) | |
60 indexfile.write(indexintro) | |
61 for note in postdata: | |
62 indexfile.write(posthead.format(note[1])) | |
63 datestr = note[2].strftime("%B %e, %Y") | |
64 indexfile.write(datediv.format(datestr)) | |
65 if note[3][0] == '<': | |
66 indexfile.write(note[3]) | |
67 else: | |
68 indexfile.write('<p>' + note[3] + '</p>') | |
69 indexfile.write('<p><a href="{0}.html">More</a></p>\n'.format(note[0])) | |
70 indexfile.write(rlgall.pend) | |
71 indexfile.close() | |
72 | |
73 def mkrssfile(postdata, notedir): | |
74 rssfile = open(notedir + "/feed.rss", "w") | |
75 rssfile.write(rsshead) | |
76 nowstr = fmtdate(None) | |
77 rssfile.write("<lastBuildDate>" + nowstr + "</lastBuildDate>\n") | |
78 for post in postdata: | |
79 rssfile.write("<item>\n") | |
80 rssfile.write(itementry("title", post[1])) | |
81 rssfile.write(itementry("link", noteurl(post[0]))) | |
82 rssfile.write(itementry("pubDate", fmtdate(post[2]))) | |
83 rssfile.write(itementry("description", qdetag(post[3]))) | |
84 rssfile.write("</item>\n") | |
85 rssfile.write('</channel>\n</rss>\n') | |
86 | |
87 webdir = "/var/www/lighttpd/notes/" | |
88 if len(sys.argv) > 1: | |
89 srcdir = sys.argv[-1] | |
90 else: | |
91 srcdir = "." | |
92 | |
93 if "-f" in sys.argv[1:]: | |
94 force = True | |
95 else: | |
96 force = False | |
97 | |
98 metadata = [] | |
99 anynew = False | |
5b4ff5680037
Add a basic blog manager. |