##// END OF EJS Templates
authn: Data migration for renaming 'container' to 'headers'....
johbo -
r60:c49cd796 default
parent child Browse files
Show More
@@ -0,0 +1,80 b''
1 # -*- coding: utf-8 -*-
2
3 import logging
4
5 from sqlalchemy.orm.attributes import flag_modified
6
7 from rhodecode.lib.dbmigrate.versions import _reset_base
8 from rhodecode.model import init_model_encryption, meta
9
10 log = logging.getLogger(__name__)
11
12
13 def upgrade(migrate_engine):
14 """
15 Upgrade operations go here.
16 Don't create your own engine; bind migrate_engine to your metadata
17 """
18 _reset_base(migrate_engine)
19 from rhodecode.lib.dbmigrate.schema import db_3_7_0_0
20 init_model_encryption(db_3_7_0_0)
21 fixups(db_3_7_0_0, meta.Session)
22
23
24 def downgrade(migrate_engine):
25 pass
26
27
28 AUTH_PLUGINS_SETTING = "auth_plugins"
29
30 PLUGIN_RENAME_MAP = {
31 'egg:rhodecode-enterprise-ce#container': 'egg:rhodecode-enterprise-ce#headers',
32 }
33
34 SETTINGS_RENAME_MAP = {
35 'auth_container_cache_ttl': 'auth_headers_cache_ttl',
36 'auth_container_clean_username': 'auth_headers_clean_username',
37 'auth_container_enabled': 'auth_headers_enabled',
38 'auth_container_fallback_header': 'auth_headers_fallback_header',
39 'auth_container_header': 'auth_headers_header',
40 }
41
42
43 def rename_plugins(models, Session):
44 query = models.RhodeCodeSetting.query().filter(
45 models.RhodeCodeSetting.app_settings_name == AUTH_PLUGINS_SETTING)
46 plugin_setting = query.scalar()
47 plugins = plugin_setting.app_settings_value
48
49 new_plugins = []
50
51 for plugin_id in plugins:
52 new_plugin_id = PLUGIN_RENAME_MAP.get(plugin_id, None)
53 if new_plugin_id:
54 new_plugins.append(new_plugin_id)
55 else:
56 new_plugins.append(plugin_id)
57
58 plugin_setting.app_settings_value = ','.join(new_plugins)
59
60 log.info("Rename of auth plugin IDs")
61 log.info("Original setting value: %s", plugins)
62 log.info("New setting value: %s", new_plugins)
63
64
65 def rename_plugin_settings(models, Session):
66 for old_name, new_name in SETTINGS_RENAME_MAP.items():
67 query = models.RhodeCodeSetting.query().filter(
68 models.RhodeCodeSetting.app_settings_name == old_name)
69 setting = query.scalar()
70 if setting:
71 setting.app_settings_name = new_name
72 log.info(
73 'Rename of plugin setting "%s" to "%s"', old_name, new_name)
74
75
76 def fixups(models, Session):
77 rename_plugins(models, Session)
78 rename_plugin_settings(models, Session)
79
80 Session().commit()
@@ -1,58 +1,58 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 # Copyright (C) 2010-2016 RhodeCode GmbH
3 # Copyright (C) 2010-2016 RhodeCode GmbH
4 #
4 #
5 # This program is free software: you can redistribute it and/or modify
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License, version 3
6 # it under the terms of the GNU Affero General Public License, version 3
7 # (only), as published by the Free Software Foundation.
7 # (only), as published by the Free Software Foundation.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU Affero General Public License
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 #
16 #
17 # This program is dual-licensed. If you wish to learn more about the
17 # This program is dual-licensed. If you wish to learn more about the
18 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21 """
21 """
22
22
23 RhodeCode, a web based repository management software
23 RhodeCode, a web based repository management software
24 versioning implementation: http://www.python.org/dev/peps/pep-0386/
24 versioning implementation: http://www.python.org/dev/peps/pep-0386/
25 """
25 """
26
26
27 import os
27 import os
28 import sys
28 import sys
29 import platform
29 import platform
30
30
31 VERSION = tuple(open(os.path.join(
31 VERSION = tuple(open(os.path.join(
32 os.path.dirname(__file__), 'VERSION')).read().split('.'))
32 os.path.dirname(__file__), 'VERSION')).read().split('.'))
33
33
34 BACKENDS = {
34 BACKENDS = {
35 'hg': 'Mercurial repository',
35 'hg': 'Mercurial repository',
36 'git': 'Git repository',
36 'git': 'Git repository',
37 'svn': 'Subversion repository',
37 'svn': 'Subversion repository',
38 }
38 }
39
39
40 CELERY_ENABLED = False
40 CELERY_ENABLED = False
41 CELERY_EAGER = False
41 CELERY_EAGER = False
42
42
43 # link to config for pylons
43 # link to config for pylons
44 CONFIG = {}
44 CONFIG = {}
45
45
46 # Linked module for extensions
46 # Linked module for extensions
47 EXTENSIONS = {}
47 EXTENSIONS = {}
48
48
49 __version__ = ('.'.join((str(each) for each in VERSION[:3])))
49 __version__ = ('.'.join((str(each) for each in VERSION[:3])))
50 __dbversion__ = 51 # defines current db version for migrations
50 __dbversion__ = 52 # defines current db version for migrations
51 __platform__ = platform.system()
51 __platform__ = platform.system()
52 __license__ = 'AGPLv3, and Commercial License'
52 __license__ = 'AGPLv3, and Commercial License'
53 __author__ = 'RhodeCode GmbH'
53 __author__ = 'RhodeCode GmbH'
54 __url__ = 'http://rhodecode.com'
54 __url__ = 'http://rhodecode.com'
55
55
56 is_windows = __platform__ in ['Windows']
56 is_windows = __platform__ in ['Windows']
57 is_unix = not is_windows
57 is_unix = not is_windows
58 is_test = False
58 is_test = False
General Comments 0
You need to be logged in to leave comments. Login now