from flask import Flask, g, request, session
from flask_limiter import Limiter
from flask.ext.login import login_required
import os
import base64
from marrow import database
from marrow import user
from marrow import bone
app = Flask(__name__)
app.teardown_appcontext(database.close_connection)
# app.config["APPLICATION_ROOT"] = "/api"
try:
from marrow_config import config
except ImportError:
class config:
secret_key = base64.b64encode(os.urandom(24))
debug = False
static_root = os.path.join(os.path.dirname(__file__), os.path.pardir, 'static')
server_name = "localhost"
app.secret_key = config.secret_key
app.debug = config.debug
app.config["SERVER_NAME"] = config.server_name
limiter = Limiter(app)
limiter.limit("60/hour 3/second", key_func=lambda: request.host)(user.user_blueprint)
limiter.exempt(user.checkuser)
limiter.exempt(user.following)
limiter.exempt(user.follows)
# Blueprints #
user.login_manager.init_app(app)
user.get_users(app)
app.register_blueprint(user.user_blueprint, url_prefix='/user')
app.register_blueprint(bone.bone_blueprint, url_prefix='/bones')
@app.route('/root')
def get_index_page():
filebase = 'index'
if 'username' not in session:
filebase = 'login'
filename = os.path.join(config.static_root, '%s.html' % filebase)
with open(filename) as f:
return f.read()
@app.route('/')
def index():
filename = os.path.join(config.static_root, 'index.html')
with open(filename) as f:
dat = f.read()
return dat
if __name__ == '__main__':
app.run(host='0.0.0.0')