diff options
Diffstat (limited to 'creactiweb/_templates/lib/server/flask/_app.py')
-rw-r--r-- | creactiweb/_templates/lib/server/flask/_app.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/creactiweb/_templates/lib/server/flask/_app.py b/creactiweb/_templates/lib/server/flask/_app.py new file mode 100644 index 0000000..89d9cb4 --- /dev/null +++ b/creactiweb/_templates/lib/server/flask/_app.py @@ -0,0 +1,65 @@ +# python import +import os, logging + +# common gettext import +from gettext import gettext + +# server import +from server import config + +# get APP_NAME or default name +APP_NAME = config.Config().get('activity>name') +APP_NAME = 'my_activity' if APP_NAME is None else APP_NAME + +# get app config values +_debug = config.Config().get('server>debug') +_key = config.Config().get('server>secret_key') +_port = config.Config().get('server>port', type_=int) + +# flask import +import flask + +# sugar or debug root path factory +try: + from sugar.activity import activity + BUNDLE = activity.get_bundle_path() + ROOT = activity.get_activity_root() +except Exception, e: + BUNDLE = os.path.abspath(os.path.join( + os.path.dirname(__file__), '..', '..', '..')) + ROOT = BUNDLE + +# init app +app = flask.Flask(__name__) +app.debug = True if _debug is None else _debug +app.secret_key = 'NO_KEY_OOPS' if _key is None else _key +# override jinja template path +app.jinja_loader.searchpath = [os.path.join(BUNDLE, 'templates')] + +# init static folder path +from werkzeug import SharedDataMiddleware +app.wsgi_app = SharedDataMiddleware(app.wsgi_app, + {'/static': os.path.join(BUNDLE, 'static')}) + +# set basic logging out of sugar +try: + import sugar + # get sugar logger + logger = logging.getLogger(APP_NAME) + logger.setLevel(logging.DEBUG) +except Exception: + # .. or flask logger + logger = app.logger + + +def run_app(): + """run method to trigger at from python class. + """ + app.run(port=_port) + + +def render(template, **context): + """Crappy hack for gettext issue in templates! + """ + context['_'] = gettext + return flask.render_template(template, **context) |