56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
|
|
from flask import Flask, Blueprint,render_template, send_from_directory,jsonify, url_for
|
|
from flatpages_index import FlatPagesIndex
|
|
import flatpages_index
|
|
|
|
def create_bp(app):
|
|
|
|
flatpages = FlatPagesIndex(app)
|
|
flatpages_index.Links.endpoint="pages.page"
|
|
flatpages_index.Links.url=(lambda s,x: url_for(s.endpoint, name=x))
|
|
#flatpages_index.Links.image_url=(lambda s,x: url_for('stuff.page', name=x))
|
|
flatpages_index.Links.file_url=(lambda s,x: url_for('pages.page', name=x))
|
|
flatpages_index.Links.thumb_url=(lambda s,x: url_for('pages.thumb', size=128,name=x))
|
|
|
|
flatpages.get('index')
|
|
app.logger.debug('flatpages loaded %d pages' % len(flatpages._pages))
|
|
app.logger.debug("Data directory is: %s" % flatpages.root)
|
|
page_blueprint = Blueprint('pages', __name__)
|
|
|
|
@page_blueprint.route('/thumb<int:size>/<path:name>/')
|
|
def thumb(size=64,name=''):
|
|
pass
|
|
|
|
@page_blueprint.route('/<path:name>/')
|
|
@page_blueprint.route('/')
|
|
def page(name='index'):
|
|
page = flatpages.get(name)
|
|
|
|
if page:
|
|
page["has_img"]=True
|
|
page.links.endpoint='pages.page'
|
|
return render_template(page["template"], post=page,
|
|
pth=page["dirpath"])
|
|
|
|
if os.path.exists(os.path.join(FLATPAGES_ROOT,name)):
|
|
return send_from_directory(FLATPAGES_ROOT,name)
|
|
else:
|
|
return send_from_directory('static',name)
|
|
|
|
|
|
|
|
|
|
@page_blueprint.route('/<path:name>.json',strict_slashes=False)
|
|
def pagejson(name='index'):
|
|
page = flatpages.get(name)
|
|
if not page is None:
|
|
page["has_img"]=False
|
|
page.links.endpoint='pages.pagejson'
|
|
# page.links.file_url=lambda n: url_for('intern.post', name=n)
|
|
return jsonify(page=dict(page))
|
|
|
|
if os.path.exists(u'{}/{}'.format(FLATPAGES_ROOT,path)):
|
|
return send_from_directory(FLATPAGES_ROOT,path)
|
|
else:
|
|
return send_from_directory('static',path)
|
|
return page_blueprint |