]> git.llucax.com Git - software/blitiri.git/blobdiff - blitiri.cgi
Fix 80 chars column limit
[software/blitiri.git] / blitiri.cgi
index 2a5df90f29f0fdf3b70b13a75f2aa56cb3eefc4f..21d13fa1e9751bd653f6014d0d918a15297e307c 100755 (executable)
@@ -24,6 +24,10 @@ comments_path = "/tmp/blog/comments"
 # default templates. If they're not found, the built-in ones will be used.
 templates_path = "/tmp/blog/templates"
 
+# Path where the cache is stored (must be writeable by the web server)
+# If None is specified, cache is disabled
+cache_path = "/tmp/blog/cache"
+
 # URL to the blog, including the name. Can be a full URL or just the path.
 blog_url = "/blog/blitiri.cgi"
 
@@ -404,6 +408,22 @@ div.section h1 {
 
 """
 
+# Cache decorator
+def cached(f):
+       def decorate(obj, *args, **kwargs):
+               if cache_path is None: # cache disabled
+                       s = f(obj, *args, **kwargs)
+               else:
+                       cache_file = os.path.join(cache_path,
+                                       'blitiri.cache.%s.html' % hash(obj))
+                       try:
+                               s = open(cache_file).read()
+                       except:
+                               s = f(obj, *args, **kwargs)
+                               open(cache_file, 'w').write(s)
+               return s
+       return decorate
+
 # helper functions
 def rst_to_html(rst, secure = True):
        settings = {
@@ -417,6 +437,7 @@ def rst_to_html(rst, secure = True):
        parts = publish_parts(rst, settings_overrides = settings,
                                writer_name = "html")
        return parts['body'].encode('utf8')
+rst_to_html = cached(rst_to_html)
 
 def validate_rst(rst, secure = True):
        try:
@@ -1156,7 +1177,8 @@ def handle_cgi():
                                at = ''
                                if line:
                                        at = ' at line %d' % line
-                               form_data.body_error = 'error%s: %s' % (at, desc)
+                               form_data.body_error = 'error%s: %s' \
+                                               % (at, desc)
                                valid = False
                if valid:
                        c = article.add_comment(form_data.author,
@@ -1251,7 +1273,10 @@ def handle_cmd():
 
 
 if os.environ.has_key('GATEWAY_INTERFACE'):
+       i = datetime.datetime.now()
        handle_cgi()
+       f = datetime.datetime.now()
+       print '<!-- render time: %s -->' % (f-i)
 else:
        sys.exit(handle_cmd())