X-Git-Url: https://git.llucax.com/software/blitiri.git/blobdiff_plain/e08e65182823a7ef54e4c69f054754ad5b424720..0e2482c0d5ee883219cf6cdcdd0f12da43a6b68a:/blitiri.cgi?ds=sidebyside diff --git a/blitiri.cgi b/blitiri.cgi index c43835d..f78ee0b 100755 --- a/blitiri.cgi +++ b/blitiri.cgi @@ -50,25 +50,32 @@ import urllib import cgi from docutils.core import publish_parts +# Before importing the config, add our cwd to the Python path +sys.path.append(os.getcwd()) + # Load the config file, if there is one -if os.path.isfile("config.py"): - try: - from config import * - except: - pass +try: + from config import * +except: + pass +# Pimp *_path config variables to support relative paths +data_path = os.path.realpath(data_path) +templates_path = os.path.realpath(templates_path) + # Default template -default_main_header = """ - +default_main_header = """\ + + - + - + %(title)s @@ -80,12 +87,12 @@ default_main_header = """ """ default_main_footer = """ -

-



+ @@ -124,16 +131,17 @@ default_css = """ body { font-family: sans-serif; font-size: small; + width: 52em; } div.content { - width: 50%; + width: 96%; } h1 { font-size: large; border-bottom: 2px solid #99F; - width: 60%; + width: 100%; margin-bottom: 1em; } @@ -171,15 +179,11 @@ div.article { margin-bottom: 2em; } -hr { - float: left; - height: 2px; - border: 0; - background-color: #99F; - width: 60%; -} - div.footer { + margin-top: 1em; + padding-top: 0.4em; + width: 100%; + border-top: 2px solid #99F; font-size: x-small; } @@ -358,6 +362,10 @@ class Article (object): return -1 return 1 + def title_cmp(self, other): + return cmp(self.title, other.title) + + def load(self): try: raw = open(data_path + '/' + self.path).readlines() @@ -504,6 +512,20 @@ def render_html(articles, db, actyear = None): print template.get_article_footer(a) print template.get_main_footer() +def render_artlist(articles, db, actyear = None): + template = Templates(templates_path, db, actyear) + print 'Content-type: text/html; charset=utf-8\n' + print template.get_main_header() + print '

Articles

' + for a in articles: + print '
  • %(title)s
  • ' \ + % { 'url': blog_url, + 'uuid': a.uuid, + 'title': a.title, + 'author': a.author, + } + print template.get_main_footer() + def render_atom(articles): if len(articles) > 0: updated = articles[0].updated.isoformat() @@ -556,7 +578,7 @@ def render_atom(articles): def render_style(): - print 'Content-type: text/plain\n' + print 'Content-type: text/css\r\n\r\n', print default_css def handle_cgi(): @@ -571,6 +593,7 @@ def handle_cgi(): atom = False style = False post = False + artlist = False if os.environ.has_key('PATH_INFO'): path_info = os.environ['PATH_INFO'] @@ -578,7 +601,9 @@ def handle_cgi(): atom = path_info == '/atom' tag = path_info.startswith('/tag/') post = path_info.startswith('/post/') - if not style and not atom and not post and not tag: + artlist = path_info.startswith('/list') + if not style and not atom and not post and not tag \ + and not artlist: date = path_info.split('/')[1:] try: if len(date) > 1 and date[0]: @@ -606,7 +631,11 @@ def handle_cgi(): elif style: render_style() elif post: - render_html( [db.get_article(uuid)], year ) + render_html( [db.get_article(uuid)], db, year ) + elif artlist: + articles = db.get_articles() + articles.sort(cmp = Article.title_cmp) + render_artlist(articles, db) else: articles = db.get_articles(year, month, day, tags) articles.sort(reverse = True)