Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/creactiweb/_templates/lib/server/flask/_app.py
diff options
context:
space:
mode:
Diffstat (limited to 'creactiweb/_templates/lib/server/flask/_app.py')
-rw-r--r--creactiweb/_templates/lib/server/flask/_app.py65
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)