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