##// END OF EJS Templates
Added option to swap the db connection uri based on ENV TEST_DB string
Added option to swap the db connection uri based on ENV TEST_DB string

File last commit:

r2532:19de74e3 beta
r2560:380d6d86 beta
Show More
db_manage.py
516 lines | 17.5 KiB | text/x-python | PythonLexer
fixed imports on migrate, added getting current version from database
r835 # -*- coding: utf-8 -*-
"""
rhodecode.lib.db_manage
~~~~~~~~~~~~~~~~~~~~~~~
db migrations:...
r838 Database creation, and setup module for RhodeCode. Used for creation
of database as well as for migration operations
source code cleanup: remove trailing white space, normalize file endings
r1203
fixed imports on migrate, added getting current version from database
r835 :created_on: Apr 10, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
fixed imports on migrate, added getting current version from database
r835 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # 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.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # 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.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
renamed project to rhodecode
r547
import os
import sys
import uuid
fixed imports on migrate, added getting current version from database
r835 import logging
from os.path import dirname as dn, join as jn
from rhodecode import __dbversion__
from rhodecode.model import meta
renamed project to rhodecode
r547
User usermodel instead of db model to manage accounts...
r1634 from rhodecode.model.user import UserModel
renamed project to rhodecode
r547 from rhodecode.lib.utils import ask_ok
from rhodecode.model import init_model
Fixed #161 form saves the create repository permission....
r1266 from rhodecode.model.db import User, Permission, RhodeCodeUi, \
Added group permission autofix for older version of rhodecode which didn't have default permissions for repos groups
r1985 RhodeCodeSetting, UserToPerm, DbMigrateVersion, RepoGroup,\
UserRepoGroupToPerm
fixed imports on migrate, added getting current version from database
r835
renamed project to rhodecode
r547 from sqlalchemy.engine import create_engine
Added group permission autofix for older version of rhodecode which didn't have default permissions for repos groups
r1985 from rhodecode.model.repos_group import ReposGroupModel
fixed imports on migrate, added getting current version from database
r835
renamed project to rhodecode
r547 log = logging.getLogger(__name__)
Fixed #161 form saves the create repository permission....
r1266
renamed project to rhodecode
r547 class DbManage(object):
fixed db manage, to work on other databases than sqlite
r781 def __init__(self, log_sql, dbconf, root, tests=False):
self.dbname = dbconf.split('/')[-1]
renamed project to rhodecode
r547 self.tests = tests
removed egg info, update files for distutils build...
r552 self.root = root
fixed db manage, to work on other databases than sqlite
r781 self.dburi = dbconf
Fixed dbmigrate issues.
r907 self.log_sql = log_sql
self.db_exists = False
self.init_db()
def init_db(self):
engine = create_engine(self.dburi, echo=self.log_sql)
renamed project to rhodecode
r547 init_model(engine)
commit less models...
r1749 self.sa = meta.Session
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 def create_tables(self, override=False):
fixes #324 proper largefiles extension enable
r1783 """
Create a auth database
renamed project to rhodecode
r547 """
fixed wrong migration schema...
r837
fixed ldap settings creation, we need to fill in some bool defaults properly to make it work fine
r1138 log.info("Any existing database is going to be destroyed")
if self.tests:
destroy = True
else:
destroy = ask_ok('Are you sure to destroy old database ? [y/n]')
if not destroy:
sys.exit()
if destroy:
meta.Base.metadata.drop_all()
changed dev and tests to postgressql for more error proof setup....
r964
renamed project to rhodecode
r547 checkfirst = not override
meta.Base.metadata.create_all(checkfirst=checkfirst)
garden...
r1976 log.info('Created tables for %s' % self.dbname)
Code refactoring,models renames...
r629
added current db version into rhodecode,...
r834 def set_db_version(self):
another major refactoring with session management
r1734 ver = DbMigrateVersion()
ver.version = __dbversion__
ver.repository_id = 'rhodecode_db_migrations'
ver.repository_path = 'versions'
self.sa.add(ver)
garden...
r1976 log.info('db version set to: %s' % __dbversion__)
added current db version into rhodecode,...
r834
moved db migration do db manage script, added my cycles for upgrades
r839 def upgrade(self):
fixes #324 proper largefiles extension enable
r1783 """
Upgrades given database schema to given revision following
updated migration for version 1.2
r900 all needed steps, to perform the upgrade
source code cleanup: remove trailing white space, normalize file endings
r1203
moved db migration do db manage script, added my cycles for upgrades
r839 """
fixed import problems
r841
from rhodecode.lib.dbmigrate.migrate.versioning import api
from rhodecode.lib.dbmigrate.migrate.exceptions import \
DatabaseNotControlledError
added warning on sqlite when using migration....
r1835 if 'sqlite' in self.dburi:
print (
'********************** WARNING **********************\n'
'Make sure your version of sqlite is at least 3.7.X. \n'
'Earlier versions are known to fail on some migrations\n'
'*****************************************************\n'
)
moved db migration do db manage script, added my cycles for upgrades
r839 upgrade = ask_ok('You are about to perform database upgrade, make '
'sure You backed up your database before. '
'Continue ? [y/n]')
if not upgrade:
sys.exit('Nothing done')
fixed path issues in upgrade script
r843 repository_path = jn(dn(dn(dn(os.path.realpath(__file__)))),
'rhodecode/lib/dbmigrate')
moved db migration do db manage script, added my cycles for upgrades
r839 db_uri = self.dburi
try:
curr_version = api.db_version(db_uri, repository_path)
msg = ('Found current database under version'
' control with version %s' % curr_version)
small fixes for interactive prompt in setup
r1299 except (RuntimeError, DatabaseNotControlledError):
moved db migration do db manage script, added my cycles for upgrades
r839 curr_version = 1
msg = ('Current database is not under version control. Setting'
' as version %s' % curr_version)
api.version_control(db_uri, repository_path, curr_version)
print (msg)
if curr_version == __dbversion__:
sys.exit('This database is already at the newest version')
#======================================================================
# UPGRADE STEPS
#======================================================================
class UpgradeSteps(object):
fixes #324 proper largefiles extension enable
r1783 """
Those steps follow schema versions so for example schema
updated migration for version 1.2
r900 for example schema with seq 002 == step_2 and so on.
"""
moved db migration do db manage script, added my cycles for upgrades
r839
def __init__(self, klass):
self.klass = klass
def step_0(self):
fixes #324 proper largefiles extension enable
r1783 # step 0 is the schema upgrade, and than follow proper upgrades
moved db migration do db manage script, added my cycles for upgrades
r839 print ('attempting to do database upgrade to version %s' \
% __dbversion__)
api.upgrade(db_uri, repository_path, __dbversion__)
print ('Schema upgrade completed')
def step_1(self):
pass
def step_2(self):
print ('Patching repo paths for newer version of RhodeCode')
self.klass.fix_repo_paths()
print ('Patching default user of RhodeCode')
self.klass.fix_default_user()
log.info('Changing ui settings')
self.klass.create_ui_settings()
implemented #89 google analytics code
r890 def step_3(self):
print ('Adding additional settings into RhodeCode db')
self.klass.fix_settings()
added default ldap option into migration
r1510 print ('Adding ldap defaults')
self.klass.create_ldap_options(skip_existing=True)
another major refactoring with session management
r1734
added warning on sqlite when using migration....
r1835 def step_4(self):
added migrations from 1.2.X to 1.3
r2000 print ('create permissions and fix groups')
fixed found issues in upgrade script
r1987 self.klass.create_permissions()
Added group permission autofix for older version of rhodecode which didn't have default permissions for repos groups
r1985 self.klass.fixup_groups()
added warning on sqlite when using migration....
r1835
added migrations from 1.2.X to 1.3
r2000 def step_5(self):
pass
added clone_uri to API method for creating users
r2006
Starting RhodeCode 1.4 Branch
r2214 def step_6(self):
pass
moved db migration do db manage script, added my cycles for upgrades
r839 upgrade_steps = [0] + range(curr_version + 1, __dbversion__ + 1)
fixes #324 proper largefiles extension enable
r1783 # CALL THE PROPER ORDER OF STEPS TO PERFORM FULL UPGRADE
moved db migration do db manage script, added my cycles for upgrades
r839 for step in upgrade_steps:
print ('performing upgrade step %s' % step)
notification to commit author + gardening
r1716 getattr(UpgradeSteps(self), 'step_%s' % step)()
fixed found issues in upgrade script
r1987 self.sa.commit()
added migrations from 1.2.X to 1.3
r2000
fixed wrong migration schema...
r837 def fix_repo_paths(self):
fixes #324 proper largefiles extension enable
r1783 """
Fixes a old rhodecode version path into new one without a '*'
fixed wrong migration schema...
r837 """
paths = self.sa.query(RhodeCodeUi)\
.filter(RhodeCodeUi.ui_key == '/')\
.scalar()
paths.ui_value = paths.ui_value.replace('*', '')
try:
self.sa.add(paths)
self.sa.commit()
except:
self.sa.rollback()
raise
db migrations:...
r838 def fix_default_user(self):
fixes #324 proper largefiles extension enable
r1783 """
Fixes a old default user with some 'nicer' default values,
db migrations:...
r838 used mostly for anonymous access
"""
def_user = self.sa.query(User)\
.filter(User.username == 'default')\
.one()
def_user.name = 'Anonymous'
def_user.lastname = 'User'
def_user.email = 'anonymous@rhodecode.org'
try:
self.sa.add(def_user)
self.sa.commit()
except:
self.sa.rollback()
raise
implemented #89 google analytics code
r890 def fix_settings(self):
fixes #324 proper largefiles extension enable
r1783 """
Fixes rhodecode settings adds ga_code key for google analytics
implemented #89 google analytics code
r890 """
fixed wrong migration schema...
r837
refactoring of models names for repoGroup permissions
r1633 hgsettings3 = RhodeCodeSetting('ga_code', '')
Fixed dbmigrate issues.
r907
implemented #89 google analytics code
r890 try:
self.sa.add(hgsettings3)
self.sa.commit()
except:
self.sa.rollback()
raise
fixed wrong migration schema...
r837
new setup-rhodecode command with optional defaults
r2284 def admin_prompt(self, second=False, defaults={}):
renamed project to rhodecode
r547 if not self.tests:
import getpass
Code refactoring,models renames...
r629
new setup-rhodecode command with optional defaults
r2284 # defaults
username = defaults.get('username')
password = defaults.get('password')
email = defaults.get('email')
added password validation, second try on paster setup-app,...
r597 def get_password():
Fixed #161 form saves the create repository permission....
r1266 password = getpass.getpass('Specify admin password '
'(min 6 chars):')
added password validation, second try on paster setup-app,...
r597 confirm = getpass.getpass('Confirm password:')
Code refactoring,models renames...
r629
added password validation, second try on paster setup-app,...
r597 if password != confirm:
log.error('passwords mismatch')
return False
if len(password) < 6:
log.error('password is to short use at least 6 characters')
return False
Code refactoring,models renames...
r629
added password validation, second try on paster setup-app,...
r597 return password
new setup-rhodecode command with optional defaults
r2284 if username is None:
username = raw_input('Specify admin username:')
if password is None:
added password validation, second try on paster setup-app,...
r597 password = get_password()
if not password:
new setup-rhodecode command with optional defaults
r2284 #second try
password = get_password()
if not password:
sys.exit()
if email is None:
email = raw_input('Specify admin email:')
renamed project to rhodecode
r547 self.create_user(username, password, email, True)
else:
log.info('creating admin and regular test users')
fixed repo_create permission by adding missing commit statements...
r1758 from rhodecode.tests import TEST_USER_ADMIN_LOGIN,\
fixes #324 proper largefiles extension enable
r1783 TEST_USER_ADMIN_PASS, TEST_USER_ADMIN_EMAIL,\
TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS,\
TEST_USER_REGULAR_EMAIL, TEST_USER_REGULAR2_LOGIN, \
TEST_USER_REGULAR2_PASS, TEST_USER_REGULAR2_EMAIL
fixed repo_create permission by adding missing commit statements...
r1758
self.create_user(TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS,
TEST_USER_ADMIN_EMAIL, True)
fixes #324 proper largefiles extension enable
r1783
fixed repo_create permission by adding missing commit statements...
r1758 self.create_user(TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS,
TEST_USER_REGULAR_EMAIL, False)
fixes #324 proper largefiles extension enable
r1783
fixed repo_create permission by adding missing commit statements...
r1758 self.create_user(TEST_USER_REGULAR2_LOGIN, TEST_USER_REGULAR2_PASS,
TEST_USER_REGULAR2_EMAIL, False)
Code refactoring,models renames...
r629
fixed wrong migration schema...
r837 def create_ui_settings(self):
fixes #324 proper largefiles extension enable
r1783 """
Creates ui settings, fills out hooks
fixed wrong migration schema...
r837 and disables dotencode
fixes #324 proper largefiles extension enable
r1783 """
source code cleanup: remove trailing white space, normalize file endings
r1203
fixed wrong migration schema...
r837 #HOOKS
Added more advanced hook management into rhodecode admin settings
r1460 hooks1_key = RhodeCodeUi.HOOK_UPDATE
fixed wrong migration schema...
r837 hooks1_ = self.sa.query(RhodeCodeUi)\
.filter(RhodeCodeUi.ui_key == hooks1_key).scalar()
Code refactoring,models renames...
r629
fixed wrong migration schema...
r837 hooks1 = RhodeCodeUi() if hooks1_ is None else hooks1_
hooks1.ui_section = 'hooks'
hooks1.ui_key = hooks1_key
hooks1.ui_value = 'hg update >&2'
hooks1.ui_active = False
Added more advanced hook management into rhodecode admin settings
r1460 hooks2_key = RhodeCodeUi.HOOK_REPO_SIZE
fixed wrong migration schema...
r837 hooks2_ = self.sa.query(RhodeCodeUi)\
.filter(RhodeCodeUi.ui_key == hooks2_key).scalar()
hooks2 = RhodeCodeUi() if hooks2_ is None else hooks2_
hooks2.ui_section = 'hooks'
hooks2.ui_key = hooks2_key
hooks2.ui_value = 'python:rhodecode.lib.hooks.repo_size'
hooks3 = RhodeCodeUi()
hooks3.ui_section = 'hooks'
Added more advanced hook management into rhodecode admin settings
r1460 hooks3.ui_key = RhodeCodeUi.HOOK_PUSH
fixed wrong migration schema...
r837 hooks3.ui_value = 'python:rhodecode.lib.hooks.log_push_action'
hooks4 = RhodeCodeUi()
hooks4.ui_section = 'hooks'
Added more advanced hook management into rhodecode admin settings
r1460 hooks4.ui_key = RhodeCodeUi.HOOK_PULL
fixed wrong migration schema...
r837 hooks4.ui_value = 'python:rhodecode.lib.hooks.log_pull_action'
enabled largefiles extension by default in rhodecode
r1694 # For mercurial 1.7 set backward comapatibility with format
fixed wrong migration schema...
r837 dotencode_disable = RhodeCodeUi()
dotencode_disable.ui_section = 'format'
dotencode_disable.ui_key = 'dotencode'
dotencode_disable.ui_value = 'false'
enabled largefiles extension by default in rhodecode
r1694 # enable largefiles
another major refactoring with session management
r1734 largefiles = RhodeCodeUi()
largefiles.ui_section = 'extensions'
largefiles.ui_key = 'largefiles'
fixes #324 proper largefiles extension enable
r1783 largefiles.ui_value = ''
enabled largefiles extension by default in rhodecode
r1694
another major refactoring with session management
r1734 self.sa.add(hooks1)
self.sa.add(hooks2)
self.sa.add(hooks3)
self.sa.add(hooks4)
self.sa.add(largefiles)
fixed wrong migration schema...
r837
another major refactoring with session management
r1734 def create_ldap_options(self, skip_existing=False):
fixed wrong migration schema...
r837 """Creates ldap settings"""
another major refactoring with session management
r1734 for k, v in [('ldap_active', 'false'), ('ldap_host', ''),
('ldap_port', '389'), ('ldap_tls_kind', 'PLAIN'),
('ldap_tls_reqcert', ''), ('ldap_dn_user', ''),
('ldap_dn_pass', ''), ('ldap_base_dn', ''),
('ldap_filter', ''), ('ldap_search_scope', ''),
('ldap_attr_login', ''), ('ldap_attr_firstname', ''),
('ldap_attr_lastname', ''), ('ldap_attr_email', '')]:
fixed wrong migration schema...
r837
another major refactoring with session management
r1734 if skip_existing and RhodeCodeSetting.get_by_name(k) != None:
log.debug('Skipping option %s' % k)
continue
setting = RhodeCodeSetting(k, v)
self.sa.add(setting)
Code refactoring,models renames...
r629
Added group permission autofix for older version of rhodecode which didn't have default permissions for repos groups
r1985 def fixup_groups(self):
def_usr = User.get_by_username('default')
for g in RepoGroup.query().all():
g.group_name = g.get_new_name(g.name)
self.sa.add(g)
# get default perm
default = UserRepoGroupToPerm.query()\
.filter(UserRepoGroupToPerm.group == g)\
.filter(UserRepoGroupToPerm.user == def_usr)\
.scalar()
if default is None:
log.debug('missing default permission for group %s adding' % g)
ReposGroupModel()._create_default_perms(g)
new setup-rhodecode command with optional defaults
r2284 def config_prompt(self, test_repo_path='', retries=3, defaults={}):
_path = defaults.get('repos_location')
fixes #120 websetup command runs os.access on given path checking for write access
r1094 if retries == 3:
log.info('Setting up repositories config')
Code refactoring,models renames...
r629
new setup-rhodecode command with optional defaults
r2284 if _path is not None:
path = _path
elif not self.tests and not test_repo_path:
more user friendly message for repo path on setup
r1896 path = raw_input(
force and check for absolute path on rhodecode setup
r2112 'Enter a valid absolute path to store repositories. '
more user friendly message for repo path on setup
r1896 'All repositories in that path will be added automatically:'
)
renamed project to rhodecode
r547 else:
path = test_repo_path
fixes #120 websetup command runs os.access on given path checking for write access
r1094 path_ok = True
Code refactoring,models renames...
r629
fixes #324 proper largefiles extension enable
r1783 # check proper dir
renamed project to rhodecode
r547 if not os.path.isdir(path):
fixes #120 websetup command runs os.access on given path checking for write access
r1094 path_ok = False
garden...
r1976 log.error('Given path %s is not a valid directory' % path)
fixes #120 websetup command runs os.access on given path checking for write access
r1094
force and check for absolute path on rhodecode setup
r2112 elif not os.path.isabs(path):
path_ok = False
log.error('Given path %s is not an absolute path' % path)
fixes #324 proper largefiles extension enable
r1783 # check write access
force and check for absolute path on rhodecode setup
r2112 elif not os.access(path, os.W_OK) and path_ok:
fixes #120 websetup command runs os.access on given path checking for write access
r1094 path_ok = False
garden...
r1976 log.error('No write permission to given path %s' % path)
fixes #120 websetup command runs os.access on given path checking for write access
r1094
if retries == 0:
Added info about sys.exit cause
r1399 sys.exit('max retries reached')
fixes #120 websetup command runs os.access on given path checking for write access
r1094 if path_ok is False:
retries -= 1
return self.config_prompt(test_repo_path, retries)
return path
def create_settings(self, path):
Code refactoring,models renames...
r629
fixed wrong migration schema...
r837 self.create_ui_settings()
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
fixed wrong migration schema...
r837 #HG UI OPTIONS
more renames for rhode code !!
r549 web1 = RhodeCodeUi()
renamed project to rhodecode
r547 web1.ui_section = 'web'
web1.ui_key = 'push_ssl'
web1.ui_value = 'false'
Code refactoring,models renames...
r629
more renames for rhode code !!
r549 web2 = RhodeCodeUi()
renamed project to rhodecode
r547 web2.ui_section = 'web'
web2.ui_key = 'allow_archive'
web2.ui_value = 'gz zip bz2'
Code refactoring,models renames...
r629
more renames for rhode code !!
r549 web3 = RhodeCodeUi()
renamed project to rhodecode
r547 web3.ui_section = 'web'
web3.ui_key = 'allow_push'
web3.ui_value = '*'
Code refactoring,models renames...
r629
more renames for rhode code !!
r549 web4 = RhodeCodeUi()
renamed project to rhodecode
r547 web4.ui_section = 'web'
web4.ui_key = 'baseurl'
Code refactoring,models renames...
r629 web4.ui_value = '/'
more renames for rhode code !!
r549 paths = RhodeCodeUi()
renamed project to rhodecode
r547 paths.ui_section = 'paths'
paths.ui_key = '/'
Hacking for git support,and new faster repo scan
r631 paths.ui_value = path
Code refactoring,models renames...
r629
refactoring of models names for repoGroup permissions
r1633 hgsettings1 = RhodeCodeSetting('realm', 'RhodeCode authentication')
hgsettings2 = RhodeCodeSetting('title', 'RhodeCode')
hgsettings3 = RhodeCodeSetting('ga_code', '')
Code refactoring,models renames...
r629
another major refactoring with session management
r1734 self.sa.add(web1)
self.sa.add(web2)
self.sa.add(web3)
self.sa.add(web4)
self.sa.add(paths)
self.sa.add(hgsettings1)
self.sa.add(hgsettings2)
self.sa.add(hgsettings3)
fixed wrong migration schema...
r837
self.create_ldap_options()
renamed project to rhodecode
r547 log.info('created ui config')
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 def create_user(self, username, password, email='', admin=False):
garden...
r1976 log.info('creating user %s' % username)
another major refactoring with session management
r1734 UserModel().create_or_update(username, password, email,
Updated create_or_update method to not change API key when password is not updated
r2513 firstname='RhodeCode', lastname='Admin',
User usermodel instead of db model to manage accounts...
r1634 active=True, admin=admin)
renamed project to rhodecode
r547
def create_default_user(self):
log.info('creating default user')
User usermodel instead of db model to manage accounts...
r1634 # create default user for handling default permissions.
another major refactoring with session management
r1734 UserModel().create_or_update(username='default',
password=str(uuid.uuid1())[:8],
email='anonymous@rhodecode.org',
Updated create_or_update method to not change API key when password is not updated
r2513 firstname='Anonymous', lastname='User')
another major refactoring with session management
r1734
renamed project to rhodecode
r547 def create_permissions(self):
fixes #324 proper largefiles extension enable
r1783 # module.(access|create|change|delete)_[name]
#227 Initial version of repository groups permissions system...
r1982 # module.(none|read|write|admin)
Fixed #161 form saves the create repository permission....
r1266
Better descriptions of given permission overview in edit user view
r2532 for p in Permission.PERMS:
fixed found issues in upgrade script
r1987 if not Permission.get_by_key(p[0]):
added re-creation of permissions into step4 upgrade
r1986 new_perm = Permission()
new_perm.permission_name = p[0]
Better descriptions of given permission overview in edit user view
r2532 new_perm.permission_longname = p[0]
added re-creation of permissions into step4 upgrade
r1986 self.sa.add(new_perm)
renamed project to rhodecode
r547
def populate_default_permissions(self):
log.info('creating default user permissions')
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 default_user = self.sa.query(User)\
.filter(User.username == 'default').scalar()
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 reg_perm = UserToPerm()
reg_perm.user = default_user
reg_perm.permission = self.sa.query(Permission)\
.filter(Permission.permission_name == 'hg.register.manual_activate')\
Code refactoring,models renames...
r629 .scalar()
renamed project to rhodecode
r547 create_repo_perm = UserToPerm()
create_repo_perm.user = default_user
create_repo_perm.permission = self.sa.query(Permission)\
.filter(Permission.permission_name == 'hg.create.repository')\
Code refactoring,models renames...
r629 .scalar()
renamed project to rhodecode
r547 default_repo_perm = UserToPerm()
default_repo_perm.user = default_user
default_repo_perm.permission = self.sa.query(Permission)\
.filter(Permission.permission_name == 'repository.read')\
Code refactoring,models renames...
r629 .scalar()
another major refactoring with session management
r1734 self.sa.add(reg_perm)
self.sa.add(create_repo_perm)
self.sa.add(default_repo_perm)