Merge branch 'master' of fet.at:~/git/mddoc

This commit is contained in:
andis
2017-02-02 09:12:48 +01:00
3 changed files with 36 additions and 26 deletions

3
config.cfg Normal file
View File

@@ -0,0 +1,3 @@
pages_root: '/mnt/data'
pages_reload: True
static_root: 'static'

57
cont.py
View File

@@ -3,22 +3,23 @@ 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
from os.path import isfile, abspath
cfg = Config(file('config.cfg'))
FLATPAGES_AUTO_RELOAD = cfg.pages_reload
FLATPAGES_EXTENSION = '.md'
FLATPAGES_ROOT = cfg.pages_root
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]
return [f for f in os.listdir(mypath) if isfile(os.path.join(mypath, f)) and re.match('.*\.md.*',f) is None]
def get_sub_pages(path, page):
ppath=page.path
@@ -29,9 +30,6 @@ def get_sub_pages(path, page):
def get_sub_ipages(path, page):
ppath=page.path
ps=[p for p in flatpages if p.path.startswith(path) and not ( re.match('.*index',p.path) is None) and ( re.match(ppath,p.path) is None)]
# for p in ps:
# p.path='/'.join(p.path.split('/')[0:-1])
return ps
def get_flatpage(path):
@@ -39,20 +37,38 @@ def get_flatpage(path):
if path.split('/')[-1]=='index':
is_index=True
path='/'.join(path.split('/')[0:-1])
pathi = '{}/{}'.format(path, 'index')
pathi = u'{}/{}'.format(path, 'index')
page = flatpages.get(pathi)
if not page is None:
is_index=True
else:
page=flatpages.get(path)
return (is_index, path, page)
@app.route('/')
def pjoin (rt,pth):
return u'{}/{}'.format(rt,pth)
def misskey(a,key):
if not a.has_key(key):
return True
return a[key] is None
def page_defaults(page, is_index, path):
if misskey(page.meta,"title"):
page.meta["title"]=path.split('/')[-1]
if misskey(page.meta, "template"):
page.meta["template"]='post.html'
return page
@app.route('/<path:name>/')
def post(name='index'):
is_index, path, page = get_flatpage(name)
path2 = pjoin(FLATPAGES_ROOT,path)
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)
@@ -61,18 +77,9 @@ def post(name='index'):
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)
page = page_defaults(page,is_index,path)
return render_template(page["template"], ld=ld, post=page, sp=sp, spi=spi, path=path)
if os.path.exists('{}/{}'.format(FLATPAGES_ROOT,path)):
return send_from_directory(FLATPAGES_ROOT,path)

View File

@@ -31,7 +31,7 @@ Files:
<ul>
{% for d in ld %}
<li>
<a href="{{d}}">{{d}} </a>
<a href="/{{path}}/{{d}}">{{d}} </a>
</li>
{% endfor %}
</ul>