X-Git-Url: https://git.llucax.com/software/blitiri.git/blobdiff_plain/a952c0e94cd764cf1d1cb177c46ebc0cf8c2785d..f874dc7a70fd66a320882bcc1fd71e8324918f2c:/blitiri.cgi diff --git a/blitiri.cgi b/blitiri.cgi index a72ccdd..f13e59a 100755 --- a/blitiri.cgi +++ b/blitiri.cgi @@ -50,13 +50,19 @@ 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 @@ -86,6 +92,7 @@ default_main_footer = """ %(showyear)s: %(monthlinks)s
years: %(yearlinks)s
subscribe: atom
+ views: blog list
@@ -358,6 +365,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 +515,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() @@ -571,6 +596,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 +604,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 +634,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) @@ -627,7 +659,8 @@ def handle_cmd(): art_path = os.path.realpath(sys.argv[2]) if os.path.commonprefix([data_path, art_path]) != data_path: - print "Error: article must be inside data dir" + print "Error: article (%s) must be inside data_path (%s)" % \ + (art_path, data_path) return 1 art_path = art_path[len(data_path):]