# HG changeset patch # User Marcin Kuzminski # Date 2018-11-24 16:52:21 # Node ID 426d07afc12a5477a8807b016ef2cbd1253c3525 # Parent 5cf82ecc94e9a3a0cebfb655062f6076c7e3ff00 application: re-organize imports for pyramid to prepare code for speedup optimization. diff --git a/rhodecode/apps/admin/interfaces.py b/rhodecode/apps/_base/interfaces.py rename from rhodecode/apps/admin/interfaces.py rename to rhodecode/apps/_base/interfaces.py diff --git a/rhodecode/apps/admin/navigation.py b/rhodecode/apps/_base/navigation.py rename from rhodecode/apps/admin/navigation.py rename to rhodecode/apps/_base/navigation.py --- a/rhodecode/apps/admin/navigation.py +++ b/rhodecode/apps/_base/navigation.py @@ -24,7 +24,7 @@ import collections from zope.interface import implementer -from rhodecode.apps.admin.interfaces import IAdminNavigationRegistry +from rhodecode.apps._base.interfaces import IAdminNavigationRegistry from rhodecode.lib.utils2 import str2bool from rhodecode.translation import _ diff --git a/rhodecode/apps/admin/subscribers.py b/rhodecode/apps/_base/subscribers.py rename from rhodecode/apps/admin/subscribers.py rename to rhodecode/apps/_base/subscribers.py diff --git a/rhodecode/apps/admin/__init__.py b/rhodecode/apps/admin/__init__.py --- a/rhodecode/apps/admin/__init__.py +++ b/rhodecode/apps/admin/__init__.py @@ -429,7 +429,7 @@ def admin_routes(config): def includeme(config): - from rhodecode.apps.admin.navigation import includeme as nav_includeme + from rhodecode.apps._base.navigation import includeme as nav_includeme # Create admin navigation registry and add it to the pyramid registry. nav_includeme(config) @@ -438,7 +438,5 @@ def includeme(config): config.add_route(name='admin_home', pattern=ADMIN_PREFIX) config.include(admin_routes, route_prefix=ADMIN_PREFIX) - config.include('.subscribers') - # Scan module for configuration decorators. config.scan('.views', ignore='.tests') diff --git a/rhodecode/apps/admin/views/exception_tracker.py b/rhodecode/apps/admin/views/exception_tracker.py --- a/rhodecode/apps/admin/views/exception_tracker.py +++ b/rhodecode/apps/admin/views/exception_tracker.py @@ -24,7 +24,7 @@ from pyramid.httpexceptions import HTTPF from pyramid.view import view_config from rhodecode.apps._base import BaseAppView -from rhodecode.apps.admin.navigation import navigation_list +from rhodecode.apps._base.navigation import navigation_list from rhodecode.lib import helpers as h from rhodecode.lib.auth import ( LoginRequired, HasPermissionAllDecorator, CSRFRequired) diff --git a/rhodecode/apps/admin/views/open_source_licenses.py b/rhodecode/apps/admin/views/open_source_licenses.py --- a/rhodecode/apps/admin/views/open_source_licenses.py +++ b/rhodecode/apps/admin/views/open_source_licenses.py @@ -24,7 +24,7 @@ import logging from pyramid.view import view_config from rhodecode.apps._base import BaseAppView -from rhodecode.apps.admin.navigation import navigation_list +from rhodecode.apps._base.navigation import navigation_list from rhodecode.lib.auth import (LoginRequired, HasPermissionAllDecorator) from rhodecode.lib.utils import read_opensource_licenses diff --git a/rhodecode/apps/admin/views/process_management.py b/rhodecode/apps/admin/views/process_management.py --- a/rhodecode/apps/admin/views/process_management.py +++ b/rhodecode/apps/admin/views/process_management.py @@ -25,7 +25,7 @@ import signal from pyramid.view import view_config from rhodecode.apps._base import BaseAppView -from rhodecode.apps.admin.navigation import navigation_list +from rhodecode.apps._base.navigation import navigation_list from rhodecode.lib import system_info from rhodecode.lib.auth import ( LoginRequired, HasPermissionAllDecorator, CSRFRequired) diff --git a/rhodecode/apps/admin/views/sessions.py b/rhodecode/apps/admin/views/sessions.py --- a/rhodecode/apps/admin/views/sessions.py +++ b/rhodecode/apps/admin/views/sessions.py @@ -24,7 +24,7 @@ from pyramid.view import view_config from pyramid.httpexceptions import HTTPFound from rhodecode.apps._base import BaseAppView -from rhodecode.apps.admin.navigation import navigation_list +from rhodecode.apps._base.navigation import navigation_list from rhodecode.lib.auth import ( LoginRequired, HasPermissionAllDecorator, CSRFRequired) from rhodecode.lib.utils2 import safe_int diff --git a/rhodecode/apps/admin/views/settings.py b/rhodecode/apps/admin/views/settings.py --- a/rhodecode/apps/admin/views/settings.py +++ b/rhodecode/apps/admin/views/settings.py @@ -33,7 +33,7 @@ from pyramid.renderers import render from pyramid.response import Response from rhodecode.apps._base import BaseAppView -from rhodecode.apps.admin.navigation import navigation_list +from rhodecode.apps._base.navigation import navigation_list from rhodecode.apps.svn_support.config_keys import generate_config from rhodecode.lib import helpers as h from rhodecode.lib.auth import ( diff --git a/rhodecode/apps/admin/views/system_info.py b/rhodecode/apps/admin/views/system_info.py --- a/rhodecode/apps/admin/views/system_info.py +++ b/rhodecode/apps/admin/views/system_info.py @@ -25,7 +25,7 @@ from pyramid.view import view_config import rhodecode from rhodecode.apps._base import BaseAppView -from rhodecode.apps.admin.navigation import navigation_list +from rhodecode.apps._base.navigation import navigation_list from rhodecode.lib import helpers as h from rhodecode.lib.auth import (LoginRequired, HasPermissionAllDecorator) from rhodecode.lib.utils2 import str2bool diff --git a/rhodecode/apps/user_group/__init__.py b/rhodecode/apps/user_group/__init__.py --- a/rhodecode/apps/user_group/__init__.py +++ b/rhodecode/apps/user_group/__init__.py @@ -19,7 +19,7 @@ # and proprietary license terms, please see https://rhodecode.com/licenses/ -from rhodecode.apps.admin.navigation import NavigationRegistry +from rhodecode.apps._base.navigation import NavigationRegistry from rhodecode.apps._base import ADMIN_PREFIX from rhodecode.lib.utils2 import str2bool diff --git a/rhodecode/authentication/__init__.py b/rhodecode/authentication/__init__.py --- a/rhodecode/authentication/__init__.py +++ b/rhodecode/authentication/__init__.py @@ -47,6 +47,9 @@ plugin_default_auth_ttl = 30 # TODO: When refactoring this think about splitting it up into distinct # discover, load and include phases. def _discover_plugins(config, entry_point='enterprise.plugins1'): + log.debug('authentication: running plugin discovery for entrypoint %s', + entry_point) + for ep in iter_entry_points(entry_point): plugin_id = '{}{}#{}'.format( plugin_prefix, ep.dist.project_name, ep.name) @@ -73,6 +76,8 @@ def _discover_legacy_plugins(config, pre setting in database which are using the specified prefix. Normally 'py:' is used for the legacy plugins. """ + log.debug('authentication: running legacy plugin discovery for prefix %s', + legacy_plugin_prefix) try: auth_plugins = SettingsModel().get_setting_by_name('auth_plugins') enabled_plugins = auth_plugins.app_settings_value diff --git a/rhodecode/config/middleware.py b/rhodecode/config/middleware.py --- a/rhodecode/config/middleware.py +++ b/rhodecode/config/middleware.py @@ -23,6 +23,7 @@ import sys import logging import collections import tempfile +import time from paste.gzipper import make_gzip_middleware import pyramid.events @@ -78,8 +79,9 @@ def make_pyramid_app(global_config, **se # Allows to use format style "{ENV_NAME}" placeholders in the configuration. It # will be replaced by the value of the environment variable "NAME" in this case. - environ = { - 'ENV_{}'.format(key): value for key, value in os.environ.items()} + start_time = time.time() + + environ = {'ENV_{}'.format(key): value for key, value in os.environ.items()} global_config = _substitute_values(global_config, environ) settings = _substitute_values(settings, environ) @@ -105,8 +107,8 @@ def make_pyramid_app(global_config, **se config.configure_celery(global_config['__file__']) # creating the app uses a connection - return it after we are done meta.Session.remove() - - log.info('Pyramid app %s created and configured.', pyramid_app) + total_time = time.time() - start_time + log.info('Pyramid app %s created and configured in %.2fs', pyramid_app, total_time) return pyramid_app @@ -215,6 +217,7 @@ def includeme_first(config): def includeme(config): + log.debug('Initializing main includeme from %s', os.path.basename(__file__)) settings = config.registry.settings config.set_request_factory(Request) @@ -237,10 +240,13 @@ def includeme(config): config.include('rhodecode.authentication') config.include('rhodecode.integrations') + config.include('rhodecode.apps._base.navigation') + config.include('rhodecode.apps._base.subscribers') + config.include('rhodecode.tweens') + # apps config.include('rhodecode.apps._base') config.include('rhodecode.apps.ops') - config.include('rhodecode.apps.admin') config.include('rhodecode.apps.channelstream') config.include('rhodecode.apps.login') @@ -256,13 +262,10 @@ def includeme(config): config.include('rhodecode.apps.svn_support') config.include('rhodecode.apps.ssh_support') config.include('rhodecode.apps.gist') - config.include('rhodecode.apps.debug_style') - config.include('rhodecode.tweens') config.include('rhodecode.api') - config.add_route( - 'rhodecode_support', 'https://rhodecode.com/help/', static=True) + config.add_route('rhodecode_support', 'https://rhodecode.com/help/', static=True) config.add_translation_dirs('rhodecode:i18n/') settings['default_locale_name'] = settings.get('lang', 'en') diff --git a/rhodecode/integrations/views.py b/rhodecode/integrations/views.py --- a/rhodecode/integrations/views.py +++ b/rhodecode/integrations/views.py @@ -25,9 +25,9 @@ import webhelpers.paginate from pyramid.httpexceptions import HTTPFound, HTTPForbidden, HTTPNotFound +from rhodecode.integrations import integration_type_registry from rhodecode.apps._base import BaseAppView -from rhodecode.integrations import integration_type_registry -from rhodecode.apps.admin.navigation import navigation_list +from rhodecode.apps._base.navigation import navigation_list from rhodecode.lib.auth import ( LoginRequired, CSRFRequired, HasPermissionAnyDecorator, HasRepoPermissionAnyDecorator, HasRepoGroupPermissionAnyDecorator)