about summary refs log tree commit diff
path: root/uploader/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/__init__.py')
-rw-r--r--uploader/__init__.py35
1 files changed, 27 insertions, 8 deletions
diff --git a/uploader/__init__.py b/uploader/__init__.py
index b986c81..7425b38 100644
--- a/uploader/__init__.py
+++ b/uploader/__init__.py
@@ -3,13 +3,17 @@ import os
 import sys
 import logging
 from pathlib import Path
+from typing import Optional
 
 from flask import Flask, request
-from flask_session import Session
+
 from cachelib import FileSystemCache
 
 from gn_libs import jobs as gnlibs_jobs
 
+from flask_session import Session
+
+
 from uploader.oauth2.client import user_logged_in, authserver_authorise_uri
 
 from . import session
@@ -18,6 +22,7 @@ from .files.views import files
 from .species import speciesbp
 from .publications import pubbp
 from .oauth2.views import oauth2
+from .flask_extensions import url_for
 from .expression_data import exprdatabp
 from .errors import register_error_handlers
 from .background_jobs import background_jobs_bp
@@ -60,18 +65,23 @@ def setup_logging(app: Flask) -> Flask:
         "SERVER_SOFTWARE", "").split('/')
     return __log_gunicorn__(app) if bool(software) else __log_dev__(app)
 
-def setup_modules_logging(app_logger):
+def setup_modules_logging(app_logger, modules):
     """Setup module-level loggers to the same log-level as the application."""
     loglevel = logging.getLevelName(app_logger.getEffectiveLevel())
-    logging.getLogger("uploader.publications.models").setLevel(loglevel)
+    for module in modules:
+        _logger = logging.getLogger(module)
+        _logger.setLevel(loglevel)
 
 
-def create_app(config: dict = {}):
+def create_app(config: Optional[dict] = None):
     """The application factory.
 
     config: dict
       Useful to override settings in the settings files and environment
       especially in environments such as testing."""
+    if config is None:
+        config = {}
+
     app = Flask(__name__)
 
     ### BEGIN: Application configuration
@@ -98,15 +108,24 @@ def create_app(config: dict = {}):
         default_timeout=int(app.config["SESSION_FILESYSTEM_CACHE_TIMEOUT"]))
 
     setup_logging(app)
-    setup_modules_logging(app.logger)
+    setup_modules_logging(app.logger, (
+        "uploader.base_routes",
+        "uploader.flask_extensions",
+        "uploader.publications.models",
+        "uploader.publications.datatables",
+        "uploader.phenotypes.models"))
 
     # setup jinja2 symbols
-    app.add_template_global(lambda : request.url, name="request_url")
+    app.add_template_global(user_logged_in)
+    app.add_template_global(url_for, name="url_for")
     app.add_template_global(authserver_authorise_uri)
+    app.add_template_global(lambda : request.url, name="request_url")
     app.add_template_global(lambda: app.config["GN2_SERVER_URL"],
                             name="gn2server_uri")
-    app.add_template_global(user_logged_in)
-    app.add_template_global(lambda : session.user_details()["email"], name="user_email")
+    app.add_template_global(lambda : session.user_details()["email"],
+                            name="user_email")
+    app.add_template_global(lambda: app.config["FEATURE_FLAGS_HTTP"],
+                            name="http_feature_flags")
 
     Session(app)