Beautifully crafted timelines that are easy and intuitive to use. http://timeline.knightlab.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.3 KiB
87 lines
2.3 KiB
11 years ago
|
'''
|
||
|
Main entrypoint file. To run:
|
||
|
|
||
|
$ python serve.py
|
||
|
|
||
|
'''
|
||
|
from flask import Flask
|
||
|
from flask import request
|
||
|
from flask import render_template
|
||
|
from flask import json
|
||
|
from flask import send_from_directory
|
||
|
import importlib
|
||
|
import traceback
|
||
|
import sys
|
||
|
import os
|
||
|
|
||
|
#if __name__ == "__main__":
|
||
|
# Add current directory to sys.path
|
||
|
site_dir = os.path.dirname(os.path.abspath(__file__))
|
||
|
|
||
|
if site_dir not in sys.path:
|
||
|
sys.path.append(site_dir)
|
||
|
|
||
|
# Set default FLASK_SETTINGS_MODULE for debug mode
|
||
|
if not os.environ.get('FLASK_SETTINGS_MODULE', ''):
|
||
|
os.environ['FLASK_SETTINGS_MODULE'] = 'core.settings.loc'
|
||
|
|
||
|
# Import settings module for the inject_static_url context processor.
|
||
|
settings_module = os.environ.get('FLASK_SETTINGS_MODULE')
|
||
|
|
||
|
try:
|
||
|
importlib.import_module(settings_module)
|
||
|
except ImportError, e:
|
||
|
raise ImportError(
|
||
|
"Could not import settings '%s' (Is it on sys.path?): %s" \
|
||
|
% (settings_module, e))
|
||
|
|
||
|
settings = sys.modules[settings_module]
|
||
|
|
||
|
|
||
|
app = Flask(__name__)
|
||
|
|
||
|
build_dir = os.path.join(settings.PROJECT_ROOT, 'build')
|
||
|
source_dir = os.path.join(settings.PROJECT_ROOT, 'source')
|
||
|
|
||
|
@app.context_processor
|
||
|
def inject_static_url():
|
||
|
"""
|
||
|
Inject the variables 'static_url' and 'STATIC_URL' into the templates to
|
||
|
avoid hard-coded paths to static files. Grab it from the environment
|
||
|
variable STATIC_URL, or use the default. Never has a trailing slash.
|
||
|
"""
|
||
|
static_url = settings.STATIC_URL or app.static_url_path
|
||
|
if static_url.endswith('/'):
|
||
|
static_url = static_url.rstrip('/')
|
||
|
return dict(static_url=static_url, STATIC_URL=static_url)
|
||
|
|
||
|
|
||
|
@app.route('/build/<path:path>')
|
||
|
def catch_build(path):
|
||
|
"""
|
||
|
Serve /build/... urls from the build directory
|
||
|
"""
|
||
|
return send_from_directory(build_dir, path)
|
||
|
|
||
|
@app.route('/source/<path:path>')
|
||
|
def catch_source(path):
|
||
|
"""
|
||
|
Serve /source/... urls from the source directory
|
||
|
"""
|
||
|
return send_from_directory(source_dir, path)
|
||
|
|
||
|
|
||
|
|
||
|
@app.route('/')
|
||
|
@app.route('/<path:path>')
|
||
|
def catch_all(path='index.html'):
|
||
|
"""Catch-all function which serves every URL."""
|
||
|
|
||
|
if not os.path.splitext(path)[1]:
|
||
|
path = os.path.join(path, 'index.html')
|
||
|
return render_template(path)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
app.run(host='0.0.0.0', port=5000, debug=True)
|