##// END OF EJS Templates
fixed wrong migration schema...
marcink -
r837:60cbde08 beta
parent child Browse files
Show More
@@ -32,7 +32,6 b' import logging'
32 32 from os.path import dirname as dn, join as jn
33 33
34 34 from rhodecode import __dbversion__
35 from rhodecode.model.db import
36 35 from rhodecode.model import meta
37 36
38 37 from rhodecode.lib.auth import get_crypt_password
@@ -68,9 +67,9 b' class DbManage(object):'
68 67 raise Exception('database already exists')
69 68
70 69 def create_tables(self, override=False):
70 """Create a auth database
71 71 """
72 Create a auth database
73 """
72
74 73 self.check_for_db(override)
75 74 if self.db_exists:
76 75 log.info("database exist and it's going to be destroyed")
@@ -101,6 +100,25 b' class DbManage(object):'
101 100 raise
102 101 log.info('db version set to: %s', __dbversion__)
103 102
103 def fix_repo_paths(self):
104 """Fixes a old rhodecode version path into new one without a '*'
105 """
106
107 paths = self.sa.query(RhodeCodeUi)\
108 .filter(RhodeCodeUi.ui_key == '/')\
109 .scalar()
110
111 paths.ui_value = paths.ui_value.replace('*', '')
112
113 try:
114 self.sa.add(paths)
115 self.sa.commit()
116 except:
117 self.sa.rollback()
118 raise
119
120
121
104 122 def admin_prompt(self, second=False):
105 123 if not self.tests:
106 124 import getpass
@@ -136,7 +154,72 b' class DbManage(object):'
136 154 self.create_user('test_regular', 'test12', 'test_regular@mail.com', False)
137 155 self.create_user('test_regular2', 'test12', 'test_regular2@mail.com', False)
138 156
157 def create_ui_settings(self):
158 """Creates ui settings, fills out hooks
159 and disables dotencode
160
161 """
162 #HOOKS
163 hooks1_key = 'changegroup.update'
164 hooks1_ = self.sa.query(RhodeCodeUi)\
165 .filter(RhodeCodeUi.ui_key == hooks1_key).scalar()
139 166
167 hooks1 = RhodeCodeUi() if hooks1_ is None else hooks1_
168 hooks1.ui_section = 'hooks'
169 hooks1.ui_key = hooks1_key
170 hooks1.ui_value = 'hg update >&2'
171 hooks1.ui_active = False
172
173 hooks2_key = 'changegroup.repo_size'
174 hooks2_ = self.sa.query(RhodeCodeUi)\
175 .filter(RhodeCodeUi.ui_key == hooks2_key).scalar()
176
177 hooks2 = RhodeCodeUi() if hooks2_ is None else hooks2_
178 hooks2.ui_section = 'hooks'
179 hooks2.ui_key = hooks2_key
180 hooks2.ui_value = 'python:rhodecode.lib.hooks.repo_size'
181
182 hooks3 = RhodeCodeUi()
183 hooks3.ui_section = 'hooks'
184 hooks3.ui_key = 'pretxnchangegroup.push_logger'
185 hooks3.ui_value = 'python:rhodecode.lib.hooks.log_push_action'
186
187 hooks4 = RhodeCodeUi()
188 hooks4.ui_section = 'hooks'
189 hooks4.ui_key = 'preoutgoing.pull_logger'
190 hooks4.ui_value = 'python:rhodecode.lib.hooks.log_pull_action'
191
192 #For mercurial 1.7 set backward comapatibility with format
193 dotencode_disable = RhodeCodeUi()
194 dotencode_disable.ui_section = 'format'
195 dotencode_disable.ui_key = 'dotencode'
196 dotencode_disable.ui_value = 'false'
197
198 try:
199 self.sa.add(hooks1)
200 self.sa.add(hooks2)
201 self.sa.add(hooks3)
202 self.sa.add(hooks4)
203 self.sa.add(dotencode_disable)
204 self.sa.commit()
205 except:
206 self.sa.rollback()
207 raise
208
209
210 def create_ldap_options(self):
211 """Creates ldap settings"""
212
213 try:
214 for k in ['ldap_active', 'ldap_host', 'ldap_port', 'ldap_ldaps',
215 'ldap_dn_user', 'ldap_dn_pass', 'ldap_base_dn']:
216
217 setting = RhodeCodeSettings(k, '')
218 self.sa.add(setting)
219 self.sa.commit()
220 except:
221 self.sa.rollback()
222 raise
140 223
141 224 def config_prompt(self, test_repo_path=''):
142 225 log.info('Setting up repositories config')
@@ -151,35 +234,9 b' class DbManage(object):'
151 234 log.error('You entered wrong path: %s', path)
152 235 sys.exit()
153 236
154 hooks1 = RhodeCodeUi()
155 hooks1.ui_section = 'hooks'
156 hooks1.ui_key = 'changegroup.update'
157 hooks1.ui_value = 'hg update >&2'
158 hooks1.ui_active = False
159
160 hooks2 = RhodeCodeUi()
161 hooks2.ui_section = 'hooks'
162 hooks2.ui_key = 'changegroup.repo_size'
163 hooks2.ui_value = 'python:rhodecode.lib.hooks.repo_size'
237 self.create_ui_settings()
164 238
165 hooks3 = RhodeCodeUi()
166 hooks3.ui_section = 'hooks'
167 hooks3.ui_key = 'pretxnchangegroup.push_logger'
168 hooks3.ui_value = 'python:rhodecode.lib.hooks.log_push_action'
169
170 hooks4 = RhodeCodeUi()
171 hooks4.ui_section = 'hooks'
172 hooks4.ui_key = 'preoutgoing.pull_logger'
173 hooks4.ui_value = 'python:rhodecode.lib.hooks.log_pull_action'
174
175 #for mercurial 1.7 set backward comapatibility with format
176
177 dotencode_disable = RhodeCodeUi()
178 dotencode_disable.ui_section = 'format'
179 dotencode_disable.ui_key = 'dotencode'
180 dotencode_disable.ui_section = 'false'
181
182
239 #HG UI OPTIONS
183 240 web1 = RhodeCodeUi()
184 241 web1.ui_section = 'web'
185 242 web1.ui_key = 'push_ssl'
@@ -211,10 +268,6 b' class DbManage(object):'
211 268
212 269
213 270 try:
214 self.sa.add(hooks1)
215 self.sa.add(hooks2)
216 self.sa.add(hooks3)
217 self.sa.add(hooks4)
218 271 self.sa.add(web1)
219 272 self.sa.add(web2)
220 273 self.sa.add(web3)
@@ -222,17 +275,14 b' class DbManage(object):'
222 275 self.sa.add(paths)
223 276 self.sa.add(hgsettings1)
224 277 self.sa.add(hgsettings2)
225 self.sa.add(dotencode_disable)
226 for k in ['ldap_active', 'ldap_host', 'ldap_port', 'ldap_ldaps',
227 'ldap_dn_user', 'ldap_dn_pass', 'ldap_base_dn']:
228
229 setting = RhodeCodeSettings(k, '')
230 self.sa.add(setting)
231 278
232 279 self.sa.commit()
233 280 except:
234 281 self.sa.rollback()
235 282 raise
283
284 self.create_ldap_options()
285
236 286 log.info('created ui config')
237 287
238 288 def create_user(self, username, password, email='', admin=False):
@@ -33,6 +33,7 b' from rhodecode.lib.dbmigrate.migrate.ver'
33 33 from rhodecode.lib.dbmigrate.migrate.exceptions import \
34 34 DatabaseNotControlledError
35 35 from rhodecode.lib.utils import BasePasterCommand, Command, add_cache
36 from rhodecode.lib.db_manage import DbManage
36 37
37 38 log = logging.getLogger(__name__)
38 39
@@ -54,7 +55,7 b' class UpgradeDb(BasePasterCommand):'
54 55
55 56 add_cache(config)
56 57
57 #engine = engine_from_config(config, 'sqlalchemy.db1.')
58
58 59
59 60 repository_path = 'rhodecode/lib/dbmigrate'
60 61 db_uri = config['sqlalchemy.db1.url']
@@ -70,13 +71,27 b' class UpgradeDb(BasePasterCommand):'
70 71 ' as version %s' % curr_version)
71 72 api.version_control(db_uri, repository_path, curr_version)
72 73
74 self.notify_msg(msg)
73 75
74 print msg
75 76 #now we have our dbversion we can do upgrade
77 self.notify_msg('attempting to do database upgrade to version %s' \
78 % __dbversion__)
79
80 api.upgrade(db_uri, repository_path, __dbversion__)
81 self.notify_msg('Schema upgrade completed')
76 82
77 msg = 'attempting to do database upgrade to version %s' % __dbversion__
78 print msg
79 api.upgrade(db_uri, repository_path, __dbversion__)
83 #we need to make now some extra operations into database
84 self.notify_msg('Prociding with database updates')
85
86 dbmanage = DbManage(log_sql=True, dbconf=db_uri,
87 root=config['here'], tests=False)
88
89 self.notify_msg('Patching repo paths for newer version of rhodecode')
90 dbmanage.fix_repo_paths()
91
92 self.notify_msg('Changing ui settings')
93 dbmanage.create_ui_settings()
94
80 95
81 96 def update_parser(self):
82 97 self.parser.add_option('--sql',
@@ -49,25 +49,23 b' def upgrade(migrate_engine):'
49 49 #==========================================================================
50 50 # Upgrade of `repositories` table
51 51 #==========================================================================
52 tblname = 'users'
52 tblname = 'repositories'
53 53 tbl = Table(tblname, MetaData(bind=migrate_engine), autoload=True,
54 54 autoload_with=migrate_engine)
55 55
56 #ADD repo_type column
56 #ADD repo_type column#
57 57 repo_type = Column("repo_type", String(length=None, convert_unicode=False,
58 58 assert_unicode=None),
59 59 nullable=True, unique=False, default='hg')
60 60
61 61 repo_type.create(tbl, populate_default=True)
62 repo_type.alter(nullable=False)
62 #repo_type.alter(nullable=False)
63 63
64 #ADD statistics column
64 #ADD statistics column#
65 65 enable_statistics = Column("statistics", Boolean(), nullable=True,
66 66 unique=None, default=True)
67 67 enable_statistics.create(tbl)
68 68
69
70
71 69 #==========================================================================
72 70 # Add table `user_followings`
73 71 #==========================================================================
@@ -563,6 +563,19 b' class BasePasterCommand(Command):'
563 563 takes_config_file = 1
564 564 requires_config_file = True
565 565
566 def notify_msg(self, msg, log=False):
567 """Make a notification to user, additionally if logger is passed
568 it logs this action using given logger
569
570 :param msg: message that will be printed to user
571 :param log: logging instance, to use to additionally log this message
572
573 """
574 print msg
575 if log and isinstance(log, logging):
576 log(msg)
577
578
566 579 def run(self, args):
567 580 """
568 581 Overrides Command.run
General Comments 0
You need to be logged in to leave comments. Login now