changeset 6560:b5a0ae670b8a

config: move bulk of make_app to app_cfg.py In preparation of migrating to TurboGears2, where almost all setup code is in one file app_cfg.py, move the existing Pylons-based configuration to the same location. This will make it more clear which changes are really done for TurboGears2. The current move does not make functional changes, the code is moved unmodified.
author Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
date Sat, 18 Mar 2017 20:21:18 +0100
parents 0948ff2e1c83
children 7d86b9876ac9
files kallithea/config/app_cfg.py kallithea/config/middleware.py
diffstat 2 files changed, 74 insertions(+), 69 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/config/app_cfg.py	Sat Mar 18 20:21:02 2017 +0100
+++ b/kallithea/config/app_cfg.py	Sat Mar 18 20:21:18 2017 +0100
@@ -32,6 +32,21 @@
 from kallithea.model.base import init_model
 from kallithea.model.scm import ScmModel
 
+from routes.middleware import RoutesMiddleware
+from paste.cascade import Cascade
+from paste.registry import RegistryManager
+from paste.urlparser import StaticURLParser
+from paste.deploy.converters import asbool
+
+from pylons.middleware import ErrorHandler, StatusCodeRedirect
+from pylons.wsgiapp import PylonsApp
+
+from kallithea.lib.middleware.simplehg import SimpleHg
+from kallithea.lib.middleware.simplegit import SimpleGit
+from kallithea.lib.middleware.https_fixup import HttpsFixup
+from kallithea.lib.middleware.sessionmiddleware import SecureSessionMiddleware
+from kallithea.lib.middleware.wrapper import RequestWrapper
+
 def setup_configuration(config, paths, app_conf, test_env, test_index):
 
     # store some globals into kallithea
@@ -111,3 +126,60 @@
     formencode.api.set_stdtranslation(languages=[config.get('lang')])
 
     return config
+
+def setup_application(config, global_conf, full_stack, static_files):
+
+    # The Pylons WSGI app
+    app = PylonsApp(config=config)
+
+    # Routing/Session/Cache Middleware
+    app = RoutesMiddleware(app, config['routes.map'], use_method_override=False)
+    app = SecureSessionMiddleware(app, config)
+
+    # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
+    if asbool(config['pdebug']):
+        from kallithea.lib.profiler import ProfilingMiddleware
+        app = ProfilingMiddleware(app)
+
+    if asbool(full_stack):
+
+        from kallithea.lib.middleware.sentry import Sentry
+        from kallithea.lib.middleware.appenlight import AppEnlight
+        if AppEnlight and asbool(config['app_conf'].get('appenlight')):
+            app = AppEnlight(app, config)
+        elif Sentry:
+            app = Sentry(app, config)
+
+        # Handle Python exceptions
+        app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
+
+        # Display error documents for 401, 403, 404 status codes (and
+        # 500 when debug is disabled)
+        # Note: will buffer the output in memory!
+        if asbool(config['debug']):
+            app = StatusCodeRedirect(app)
+        else:
+            app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
+
+        # we want our low level middleware to get to the request ASAP. We don't
+        # need any pylons stack middleware in them - especially no StatusCodeRedirect buffering
+        app = SimpleHg(app, config)
+        app = SimpleGit(app, config)
+
+        # Enable https redirects based on HTTP_X_URL_SCHEME set by proxy
+        if any(asbool(config.get(x)) for x in ['https_fixup', 'force_https', 'use_htsts']):
+            app = HttpsFixup(app, config)
+
+        app = RequestWrapper(app, config) # logging
+
+    # Establish the Registry for this application
+    app = RegistryManager(app) # thread / request-local module globals / variables
+
+    if asbool(static_files):
+        # Serve static files
+        static_app = StaticURLParser(config['pylons.paths']['static_files'])
+        app = Cascade([static_app, app])
+
+    app.config = config
+
+    return app
--- a/kallithea/config/middleware.py	Sat Mar 18 20:21:02 2017 +0100
+++ b/kallithea/config/middleware.py	Sat Mar 18 20:21:18 2017 +0100
@@ -15,22 +15,8 @@
     Pylons middleware initialization
 """
 
-from routes.middleware import RoutesMiddleware
-from paste.cascade import Cascade
-from paste.registry import RegistryManager
-from paste.urlparser import StaticURLParser
-from paste.deploy.converters import asbool
-
-from pylons.middleware import ErrorHandler, StatusCodeRedirect
-from pylons.wsgiapp import PylonsApp
-
-from kallithea.lib.middleware.simplehg import SimpleHg
-from kallithea.lib.middleware.simplegit import SimpleGit
-from kallithea.lib.middleware.https_fixup import HttpsFixup
-from kallithea.lib.middleware.sessionmiddleware import SecureSessionMiddleware
+from kallithea.config.app_cfg import setup_application
 from kallithea.config.environment import load_environment
-from kallithea.lib.middleware.wrapper import RequestWrapper
-
 
 def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
     """Create a Pylons WSGI application and return it
@@ -54,57 +40,4 @@
     # Configure the Pylons environment
     config = load_environment(global_conf, app_conf)
 
-    # The Pylons WSGI app
-    app = PylonsApp(config=config)
-
-    # Routing/Session/Cache Middleware
-    app = RoutesMiddleware(app, config['routes.map'], use_method_override=False)
-    app = SecureSessionMiddleware(app, config)
-
-    # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
-    if asbool(config['pdebug']):
-        from kallithea.lib.profiler import ProfilingMiddleware
-        app = ProfilingMiddleware(app)
-
-    if asbool(full_stack):
-
-        from kallithea.lib.middleware.sentry import Sentry
-        from kallithea.lib.middleware.appenlight import AppEnlight
-        if AppEnlight and asbool(config['app_conf'].get('appenlight')):
-            app = AppEnlight(app, config)
-        elif Sentry:
-            app = Sentry(app, config)
-
-        # Handle Python exceptions
-        app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
-
-        # Display error documents for 401, 403, 404 status codes (and
-        # 500 when debug is disabled)
-        # Note: will buffer the output in memory!
-        if asbool(config['debug']):
-            app = StatusCodeRedirect(app)
-        else:
-            app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
-
-        # we want our low level middleware to get to the request ASAP. We don't
-        # need any pylons stack middleware in them - especially no StatusCodeRedirect buffering
-        app = SimpleHg(app, config)
-        app = SimpleGit(app, config)
-
-        # Enable https redirects based on HTTP_X_URL_SCHEME set by proxy
-        if any(asbool(config.get(x)) for x in ['https_fixup', 'force_https', 'use_htsts']):
-            app = HttpsFixup(app, config)
-
-        app = RequestWrapper(app, config) # logging
-
-    # Establish the Registry for this application
-    app = RegistryManager(app) # thread / request-local module globals / variables
-
-    if asbool(static_files):
-        # Serve static files
-        static_app = StaticURLParser(config['pylons.paths']['static_files'])
-        app = Cascade([static_app, app])
-
-    app.config = config
-
-    return app
+    return setup_application(config, global_conf, full_stack, static_files)