Files @ ffd45b185016
Branch filter:

Location: kallithea/rhodecode/config/environment.py - annotation

Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.

This imports changes between changesets 21af6c4eab3d and 6177597791c2 in
RhodeCode's original repository, including only changes to Python files and HTML.

RhodeCode clearly licensed its changes to these files under GPLv3
in their /LICENSE file, which states the following:
The Python code and integrated HTML are licensed under the GPLv3 license.

(See:
https://code.rhodecode.com/rhodecode/files/v2.2.5/LICENSE
or
http://web.archive.org/web/20140512193334/https://code.rhodecode.com/rhodecode/files/f3b123159901f15426d18e3dc395e8369f70ebe0/LICENSE
for an online copy of that LICENSE file)

Conservancy reviewed these changes and confirmed that they can be licensed as
a whole to the Kallithea project under GPLv3-only.

While some of the contents committed herein are clearly licensed
GPLv3-or-later, on the whole we must assume the are GPLv3-only, since the
statement above from RhodeCode indicates that they intend GPLv3-only as their
license, per GPLv3§14 and other relevant sections of GPLv3.
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
02246101c846
02246101c846
02246101c846
8ecfed1d8f8b
ffd45b185016
02246101c846
1e757ac98988
1e757ac98988
1e757ac98988
02246101c846
8ecfed1d8f8b
8ecfed1d8f8b
8ecfed1d8f8b
02246101c846
02246101c846
1e757ac98988
8ecfed1d8f8b
8ecfed1d8f8b
405b80e4ccd5
8ecfed1d8f8b
d7488551578e
8ecfed1d8f8b
99c093d1a142
1e757ac98988
7486da5f0628
1e757ac98988
1e757ac98988
1e757ac98988
f4807acf643d
ffd45b185016
ffd45b185016
8ecfed1d8f8b
8ecfed1d8f8b
1e757ac98988
1e757ac98988
1e757ac98988
05528ad948c4
1e757ac98988
1e757ac98988
8ecfed1d8f8b
8ecfed1d8f8b
8ecfed1d8f8b
8ecfed1d8f8b
8ecfed1d8f8b
8ecfed1d8f8b
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
fe8c2e881403
64e91067b996
e2dbdaf13562
64e91067b996
1e757ac98988
1e757ac98988
8ecfed1d8f8b
6020e3884a58
926f55b038bc
8ecfed1d8f8b
8ecfed1d8f8b
1e757ac98988
1e757ac98988
1e757ac98988
05528ad948c4
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
6020e3884a58
1e757ac98988
1e757ac98988
1e757ac98988
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
380d6d86da1f
380d6d86da1f
380d6d86da1f
380d6d86da1f
1e757ac98988
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
6d904a0cd48d
ffd45b185016
ffd45b185016
eaf1782bee64
05528ad948c4
99c093d1a142
6020e3884a58
1e757ac98988
1f47adeb67c2
1e757ac98988
05528ad948c4
07f8039ef090
405b80e4ccd5
405b80e4ccd5
b75b77ef649d
76ae40e514eb
76ae40e514eb
76ae40e514eb
ffd45b185016
76ae40e514eb
76ae40e514eb
1e757ac98988
1e757ac98988
05528ad948c4
6020e3884a58
6020e3884a58
6020e3884a58
07f8039ef090
d7488551578e
07f8039ef090
07f8039ef090
07f8039ef090
07f8039ef090
07f8039ef090
07f8039ef090
1e757ac98988
# -*- coding: utf-8 -*-
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""
    Pylons environment configuration
"""

import os
import logging
import rhodecode
import platform

from mako.lookup import TemplateLookup
from pylons.configuration import PylonsConfig
from pylons.error import handle_mako_error

# don't remove this import it does magic for celery
from rhodecode.lib import celerypylons

import rhodecode.lib.app_globals as app_globals

from rhodecode.config.routing import make_map

from rhodecode.lib import helpers
from rhodecode.lib.auth import set_available_permissions
from rhodecode.lib.utils import repo2db_mapper, make_ui, set_rhodecode_config,\
    load_rcextensions, check_git_version, set_vcs_config
from rhodecode.lib.utils2 import engine_from_config, str2bool
from rhodecode.lib.db_manage import DbManage
from rhodecode.model import init_model
from rhodecode.model.scm import ScmModel

log = logging.getLogger(__name__)


def load_environment(global_conf, app_conf, initial=False,
                     test_env=None, test_index=None):
    """
    Configure the Pylons environment via the ``pylons.config``
    object
    """
    config = PylonsConfig()

    # Pylons paths
    root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    paths = dict(
        root=root,
        controllers=os.path.join(root, 'controllers'),
        static_files=os.path.join(root, 'public'),
        templates=[os.path.join(root, 'templates')]
    )

    # Initialize config with the basic options
    config.init_app(global_conf, app_conf, package='rhodecode', paths=paths)

    # store some globals into rhodecode
    rhodecode.CELERY_ON = str2bool(config['app_conf'].get('use_celery'))
    rhodecode.CELERY_EAGER = str2bool(config['app_conf'].get('celery.always.eager'))

    config['routes.map'] = make_map(config)
    config['pylons.app_globals'] = app_globals.Globals(config)
    config['pylons.h'] = helpers
    rhodecode.CONFIG = config

    load_rcextensions(root_path=config['here'])

    # Setup cache object as early as possible
    import pylons
    pylons.cache._push_object(config['pylons.app_globals'].cache)

    # Create the Mako TemplateLookup, with the default auto-escaping
    config['pylons.app_globals'].mako_lookup = TemplateLookup(
        directories=paths['templates'],
        error_handler=handle_mako_error,
        module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
        input_encoding='utf-8', default_filters=['escape'],
        imports=['from webhelpers.html import escape'])

    # sets the c attribute access when don't existing attribute are accessed
    config['pylons.strict_tmpl_context'] = True
    test = os.path.split(config['__file__'])[-1] == 'test.ini'
    if test:
        if test_env is None:
            test_env = not int(os.environ.get('RC_NO_TMP_PATH', 0))
        if test_index is None:
            test_index = not int(os.environ.get('RC_WHOOSH_TEST_DISABLE', 0))
        if os.environ.get('TEST_DB'):
            # swap config if we pass enviroment variable
            config['sqlalchemy.db1.url'] = os.environ.get('TEST_DB')

        from rhodecode.lib.utils import create_test_env, create_test_index
        from rhodecode.tests import TESTS_TMP_PATH
        #set RC_NO_TMP_PATH=1 to disable re-creating the database and
        #test repos
        if test_env:
            create_test_env(TESTS_TMP_PATH, config)
        #set RC_WHOOSH_TEST_DISABLE=1 to disable whoosh index during tests
        if test_index:
            create_test_index(TESTS_TMP_PATH, config, True)

    DbManage.check_waitress()
    # MULTIPLE DB configs
    # Setup the SQLAlchemy database engine
    sa_engine_db1 = engine_from_config(config, 'sqlalchemy.db1.')
    init_model(sa_engine_db1)

    set_available_permissions(config)
    repos_path = make_ui('db').configitems('paths')[0][1]
    config['base_path'] = repos_path
    set_rhodecode_config(config)

    instance_id = rhodecode.CONFIG.get('instance_id')
    if instance_id == '*':
        instance_id = '%s-%s' % (platform.uname()[1], os.getpid())
        rhodecode.CONFIG['instance_id'] = instance_id

    # CONFIGURATION OPTIONS HERE (note: all config options will override
    # any Pylons config options)

    # store config reference into our module to skip import magic of
    # pylons
    rhodecode.CONFIG.update(config)
    set_vcs_config(rhodecode.CONFIG)

    #check git version
    check_git_version()

    if str2bool(config.get('initial_repo_scan', True)):
        repo2db_mapper(ScmModel().repo_scan(repos_path),
                       remove_obsolete=False, install_git_hook=False)
    return config