Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib/server/flask/_app.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/server/flask/_app.py')
-rw-r--r--lib/server/flask/_app.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/lib/server/flask/_app.py b/lib/server/flask/_app.py
new file mode 100644
index 0000000..cb2d4c3
--- /dev/null
+++ b/lib/server/flask/_app.py
@@ -0,0 +1,57 @@
+# 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')
+
+# our activity root directory relative to the current one
+PROJET_ROOT = os.path.join(os.path.dirname(__file__), '..', '..', '..')
+
+# 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(PROJET_ROOT, 'templates')]
+
+# init static folder path
+from werkzeug import SharedDataMiddleware
+app.wsgi_app = SharedDataMiddleware(app.wsgi_app,
+ {'/static': os.path.join(PROJET_ROOT, '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()
+
+
+def render(template, **context):
+ """Crappy hack for gettext issue in templates!
+ """
+ context['_'] = gettext
+ return flask.render_template(template, **context)