Mercurial > kallithea
comparison rhodecode/lib/db_manage.py @ 1734:48d4fcf04a29 beta
another major refactoring with session management
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 27 Nov 2011 00:50:19 +0200 |
parents | 7d1fc253549e |
children | 8ecc6b8229a5 |
comparison
equal
deleted
inserted
replaced
1733:ac54aa4200e8 | 1734:48d4fcf04a29 |
---|---|
76 checkfirst = not override | 76 checkfirst = not override |
77 meta.Base.metadata.create_all(checkfirst=checkfirst) | 77 meta.Base.metadata.create_all(checkfirst=checkfirst) |
78 log.info('Created tables for %s', self.dbname) | 78 log.info('Created tables for %s', self.dbname) |
79 | 79 |
80 def set_db_version(self): | 80 def set_db_version(self): |
81 try: | 81 ver = DbMigrateVersion() |
82 ver = DbMigrateVersion() | 82 ver.version = __dbversion__ |
83 ver.version = __dbversion__ | 83 ver.repository_id = 'rhodecode_db_migrations' |
84 ver.repository_id = 'rhodecode_db_migrations' | 84 ver.repository_path = 'versions' |
85 ver.repository_path = 'versions' | 85 self.sa.add(ver) |
86 self.sa.add(ver) | |
87 self.sa.commit() | |
88 except: | |
89 self.sa.rollback() | |
90 raise | |
91 log.info('db version set to: %s', __dbversion__) | 86 log.info('db version set to: %s', __dbversion__) |
92 | 87 |
93 def upgrade(self): | 88 def upgrade(self): |
94 """Upgrades given database schema to given revision following | 89 """Upgrades given database schema to given revision following |
95 all needed steps, to perform the upgrade | 90 all needed steps, to perform the upgrade |
160 def step_3(self): | 155 def step_3(self): |
161 print ('Adding additional settings into RhodeCode db') | 156 print ('Adding additional settings into RhodeCode db') |
162 self.klass.fix_settings() | 157 self.klass.fix_settings() |
163 print ('Adding ldap defaults') | 158 print ('Adding ldap defaults') |
164 self.klass.create_ldap_options(skip_existing=True) | 159 self.klass.create_ldap_options(skip_existing=True) |
165 | 160 |
166 upgrade_steps = [0] + range(curr_version + 1, __dbversion__ + 1) | 161 upgrade_steps = [0] + range(curr_version + 1, __dbversion__ + 1) |
167 | 162 |
168 #CALL THE PROPER ORDER OF STEPS TO PERFORM FULL UPGRADE | 163 #CALL THE PROPER ORDER OF STEPS TO PERFORM FULL UPGRADE |
169 for step in upgrade_steps: | 164 for step in upgrade_steps: |
170 print ('performing upgrade step %s' % step) | 165 print ('performing upgrade step %s' % step) |
297 dotencode_disable.ui_section = 'format' | 292 dotencode_disable.ui_section = 'format' |
298 dotencode_disable.ui_key = 'dotencode' | 293 dotencode_disable.ui_key = 'dotencode' |
299 dotencode_disable.ui_value = 'false' | 294 dotencode_disable.ui_value = 'false' |
300 | 295 |
301 # enable largefiles | 296 # enable largefiles |
302 dotencode_disable = RhodeCodeUi() | 297 largefiles = RhodeCodeUi() |
303 dotencode_disable.ui_section = 'extensions' | 298 largefiles.ui_section = 'extensions' |
304 dotencode_disable.ui_key = 'largefiles' | 299 largefiles.ui_key = 'largefiles' |
305 dotencode_disable.ui_value = '1' | 300 largefiles.ui_value = '1' |
306 | 301 |
307 try: | 302 self.sa.add(hooks1) |
308 self.sa.add(hooks1) | 303 self.sa.add(hooks2) |
309 self.sa.add(hooks2) | 304 self.sa.add(hooks3) |
310 self.sa.add(hooks3) | 305 self.sa.add(hooks4) |
311 self.sa.add(hooks4) | 306 self.sa.add(largefiles) |
312 self.sa.add(dotencode_disable) | 307 |
313 self.sa.commit() | 308 def create_ldap_options(self, skip_existing=False): |
314 except: | |
315 self.sa.rollback() | |
316 raise | |
317 | |
318 def create_ldap_options(self,skip_existing=False): | |
319 """Creates ldap settings""" | 309 """Creates ldap settings""" |
320 | 310 |
321 try: | 311 for k, v in [('ldap_active', 'false'), ('ldap_host', ''), |
322 for k, v in [('ldap_active', 'false'), ('ldap_host', ''), | 312 ('ldap_port', '389'), ('ldap_tls_kind', 'PLAIN'), |
323 ('ldap_port', '389'), ('ldap_tls_kind', 'PLAIN'), | 313 ('ldap_tls_reqcert', ''), ('ldap_dn_user', ''), |
324 ('ldap_tls_reqcert', ''), ('ldap_dn_user', ''), | 314 ('ldap_dn_pass', ''), ('ldap_base_dn', ''), |
325 ('ldap_dn_pass', ''), ('ldap_base_dn', ''), | 315 ('ldap_filter', ''), ('ldap_search_scope', ''), |
326 ('ldap_filter', ''), ('ldap_search_scope', ''), | 316 ('ldap_attr_login', ''), ('ldap_attr_firstname', ''), |
327 ('ldap_attr_login', ''), ('ldap_attr_firstname', ''), | 317 ('ldap_attr_lastname', ''), ('ldap_attr_email', '')]: |
328 ('ldap_attr_lastname', ''), ('ldap_attr_email', '')]: | 318 |
329 | 319 if skip_existing and RhodeCodeSetting.get_by_name(k) != None: |
330 if skip_existing and RhodeCodeSetting.get_by_name(k) != None: | 320 log.debug('Skipping option %s' % k) |
331 log.debug('Skipping option %s' % k) | 321 continue |
332 continue | 322 setting = RhodeCodeSetting(k, v) |
333 setting = RhodeCodeSetting(k, v) | 323 self.sa.add(setting) |
334 self.sa.add(setting) | |
335 self.sa.commit() | |
336 except: | |
337 self.sa.rollback() | |
338 raise | |
339 | 324 |
340 def config_prompt(self, test_repo_path='', retries=3): | 325 def config_prompt(self, test_repo_path='', retries=3): |
341 if retries == 3: | 326 if retries == 3: |
342 log.info('Setting up repositories config') | 327 log.info('Setting up repositories config') |
343 | 328 |
399 | 384 |
400 hgsettings1 = RhodeCodeSetting('realm', 'RhodeCode authentication') | 385 hgsettings1 = RhodeCodeSetting('realm', 'RhodeCode authentication') |
401 hgsettings2 = RhodeCodeSetting('title', 'RhodeCode') | 386 hgsettings2 = RhodeCodeSetting('title', 'RhodeCode') |
402 hgsettings3 = RhodeCodeSetting('ga_code', '') | 387 hgsettings3 = RhodeCodeSetting('ga_code', '') |
403 | 388 |
404 try: | 389 self.sa.add(web1) |
405 self.sa.add(web1) | 390 self.sa.add(web2) |
406 self.sa.add(web2) | 391 self.sa.add(web3) |
407 self.sa.add(web3) | 392 self.sa.add(web4) |
408 self.sa.add(web4) | 393 self.sa.add(paths) |
409 self.sa.add(paths) | 394 self.sa.add(hgsettings1) |
410 self.sa.add(hgsettings1) | 395 self.sa.add(hgsettings2) |
411 self.sa.add(hgsettings2) | 396 self.sa.add(hgsettings3) |
412 self.sa.add(hgsettings3) | |
413 | |
414 self.sa.commit() | |
415 except: | |
416 self.sa.rollback() | |
417 raise | |
418 | 397 |
419 self.create_ldap_options() | 398 self.create_ldap_options() |
420 | 399 |
421 log.info('created ui config') | 400 log.info('created ui config') |
422 | 401 |
423 def create_user(self, username, password, email='', admin=False): | 402 def create_user(self, username, password, email='', admin=False): |
424 log.info('creating user %s', username) | 403 log.info('creating user %s', username) |
425 UserModel().create_or_update(username, password, email, | 404 UserModel().create_or_update(username, password, email, |
426 name='RhodeCode', lastname='Admin', | 405 name='RhodeCode', lastname='Admin', |
427 active=True, admin=admin) | 406 active=True, admin=admin) |
428 | 407 |
429 def create_default_user(self): | 408 def create_default_user(self): |
430 log.info('creating default user') | 409 log.info('creating default user') |
431 # create default user for handling default permissions. | 410 # create default user for handling default permissions. |
432 UserModel().create_or_update(username='default', | 411 UserModel().create_or_update(username='default', |
433 password=str(uuid.uuid1())[:8], | 412 password=str(uuid.uuid1())[:8], |
434 email='anonymous@rhodecode.org', | 413 email='anonymous@rhodecode.org', |
435 name='Anonymous', lastname='User') | 414 name='Anonymous', lastname='User') |
436 | 415 |
437 def create_permissions(self): | 416 def create_permissions(self): |
438 #module.(access|create|change|delete)_[name] | 417 #module.(access|create|change|delete)_[name] |
439 #module.(read|write|owner) | 418 #module.(read|write|owner) |
440 perms = [('repository.none', 'Repository no access'), | 419 perms = [('repository.none', 'Repository no access'), |
441 ('repository.read', 'Repository read access'), | 420 ('repository.read', 'Repository read access'), |
456 | 435 |
457 for p in perms: | 436 for p in perms: |
458 new_perm = Permission() | 437 new_perm = Permission() |
459 new_perm.permission_name = p[0] | 438 new_perm.permission_name = p[0] |
460 new_perm.permission_longname = p[1] | 439 new_perm.permission_longname = p[1] |
461 try: | 440 self.sa.add(new_perm) |
462 self.sa.add(new_perm) | |
463 self.sa.commit() | |
464 except: | |
465 self.sa.rollback() | |
466 raise | |
467 | 441 |
468 def populate_default_permissions(self): | 442 def populate_default_permissions(self): |
469 log.info('creating default user permissions') | 443 log.info('creating default user permissions') |
470 | 444 |
471 default_user = self.sa.query(User)\ | 445 default_user = self.sa.query(User)\ |
487 default_repo_perm.user = default_user | 461 default_repo_perm.user = default_user |
488 default_repo_perm.permission = self.sa.query(Permission)\ | 462 default_repo_perm.permission = self.sa.query(Permission)\ |
489 .filter(Permission.permission_name == 'repository.read')\ | 463 .filter(Permission.permission_name == 'repository.read')\ |
490 .scalar() | 464 .scalar() |
491 | 465 |
492 try: | 466 self.sa.add(reg_perm) |
493 self.sa.add(reg_perm) | 467 self.sa.add(create_repo_perm) |
494 self.sa.add(create_repo_perm) | 468 self.sa.add(default_repo_perm) |
495 self.sa.add(default_repo_perm) | |
496 self.sa.commit() | |
497 except: | |
498 self.sa.rollback() | |
499 raise |