diff options
Diffstat (limited to 'olpcfr/flask')
-rw-r--r-- | olpcfr/flask/__init__.py | 8 | ||||
-rw-r--r-- | olpcfr/flask/_app.py | 60 |
2 files changed, 68 insertions, 0 deletions
diff --git a/olpcfr/flask/__init__.py b/olpcfr/flask/__init__.py new file mode 100644 index 0000000..1c3de70 --- /dev/null +++ b/olpcfr/flask/__init__.py @@ -0,0 +1,8 @@ +# flask import +try: + from flask import request, jsonify +except Exception, e: + pass + +# olpcfr import +from olpcfr.flask._app import app, render, run_app, APP_NAME, BUNDLE, ROOT diff --git a/olpcfr/flask/_app.py b/olpcfr/flask/_app.py new file mode 100644 index 0000000..371fe59 --- /dev/null +++ b/olpcfr/flask/_app.py @@ -0,0 +1,60 @@ +# python import +import os + +# common gettext import +from gettext import gettext + +# olpcfr import +from olpcfr 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) + +# 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 + + +try: + # flask import + import flask + # 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')}) +except Exception, e: + app = None + + +def run_app(): + """run method to trigger at from python class. + """ + if app: + app.run(port=_port) + else: + pass + + +def render(template, **context): + """Crappy hack for gettext issue in templates! + """ + context['_'] = gettext + return flask.render_template(template, **context) |