import sys from flask import Flask, render_template, send_from_directory from flask_flatpages import FlatPages, pygments_style_defs from flask_frozen import Freezer from config import Config from os import listdir import os from os.path import isfile, join DEBUG = True FLATPAGES_AUTO_RELOAD = DEBUG FLATPAGES_EXTENSION = '.md' FLATPAGES_ROOT = '/mnt/data' POST_DIR = 'posts' import re app = Flask(__name__) flatpages = FlatPages(app) freezer = Freezer(app) app.config.from_object(__name__) def list_dir(mypath): return [f for f in listdir(mypath) if isfile(join(mypath, f)) and re.match('.*\.md.*',f) is None] def get_sub_pages(path, page): ppath=page.path cc=len(path.split('/')) return [p for p in flatpages if p.path.startswith(path) and ( re.match('.*index',p.path) is None) and len(p.path.split('/'))/') def post(name='index'): is_index, path, page = get_flatpage(name) if is_index == True and not page is None: path2 = '{}/{}'.format(FLATPAGES_ROOT,path) ld=list_dir(path2) sp=get_sub_pages(path,page) spi=get_sub_ipages(path,page) else: ld=[] sp=[] spi=[] if page is not None and (not page.meta.has_key("title") or (page.meta["title"] is None)): print path page.meta["title"]=path.split('/')[-1] if page is not None and page.meta.has_key("template"): t=page["template"] else: if page is not None: page.meta["template"]='post.html' if not page is None: return render_template(page["template"], ld=ld, post=page, sp=sp, spi=spi) if os.path.exists('{}/{}'.format(FLATPAGES_ROOT,path)): return send_from_directory(FLATPAGES_ROOT,path) else: return send_from_directory('static',path) if __name__ == "__main__": if len(sys.argv) > 1 and sys.argv[1] == "build": freezer.freeze() else: app.run(host='0.0.0.0',port=4444, debug=True)