##// END OF EJS Templates
rhodecode.js: workaround missing unknown autocomplete textboxKeyUpEvent...
rhodecode.js: workaround missing unknown autocomplete textboxKeyUpEvent It was introduced in the YUI update in 5143b8df576c and used for @mention handling.

File last commit:

r4116:ffd45b18 rhodecode-2.2.5-gpl
r4173:e975e1d4 rhodecode-2.2.5-gpl
Show More
db_manage.py
587 lines | 20.4 KiB | text/x-python | PythonLexer
fixed imports on migrate, added getting current version from database
r835 # -*- coding: utf-8 -*-
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/>.
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 """
rhodecode.lib.db_manage
~~~~~~~~~~~~~~~~~~~~~~~
Database creation, and setup module for RhodeCode. Used for creation
of database as well as for migration operations
:created_on: Apr 10, 2010
:author: marcink
:copyright: (c) 2013 RhodeCode GmbH.
:license: GPLv3, see LICENSE for more details.
"""
renamed project to rhodecode
r547
import os
import sys
Changed default behaviour of dbmanage to fix issues with continues...
r3907 import time
renamed project to rhodecode
r547 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
added migrations for column change for gists expiration date
r3972 import datetime
fixed imports on migrate, added getting current version from database
r835
warn user about not using waitress on python2.5
r2827 from rhodecode import __dbversion__, __py_version__
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, \
Step6a for migrations from 1.3.6...
r2765 RhodeCodeSetting, UserToPerm, DbMigrateVersion, RepoGroup, \
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 UserRepoGroupToPerm, CacheInvalidation, UserGroup, Repository
fixed imports on migrate, added getting current version from database
r835
renamed project to rhodecode
r547 from sqlalchemy.engine import create_engine
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 from rhodecode.model.repo_group import RepoGroupModel
Step6a for migrations from 1.3.6...
r2765 #from rhodecode.model import meta
from rhodecode.model.meta import Session, Base
Added missing migrations, and move update_repoinfo to RepoModel...
r3309 from rhodecode.model.repo import RepoModel
fixed default permissions population during upgrades...
r3733 from rhodecode.model.permission import PermissionModel
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 from rhodecode.model.user_group import UserGroupModel
Step6a for migrations from 1.3.6...
r2765
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
migrations: fix old hook values...
r2779 def notify(msg):
"""
Notification for migrations messages
"""
ml = len(msg) + (4 * 2)
Changed default behaviour of dbmanage to fix issues with continues...
r3907 print('\n%s\n*** %s ***\n%s' % ('*' * ml, msg, '*' * ml)).upper()
renamed project to rhodecode
r547 class DbManage(object):
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 def __init__(self, log_sql, dbconf, root, tests=False, SESSION=None, cli_args={}):
fixed db manage, to work on other databases than sqlite
r781 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
Implemented proposed changes from pull request #77
r2919 self.cli_args = cli_args
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 self.init_db(SESSION=SESSION)
Implemented proposed changes from pull request #77
r2919
Mads Kiilerich
setup_rhodecode: fix --force-no - force_ask is tri-state...
r3671 force_ask = self.cli_args.get('force_ask')
if force_ask is not None:
global ask_ok
ask_ok = lambda *args, **kwargs: force_ask
Fixed dbmigrate issues.
r907
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 def init_db(self, SESSION=None):
if SESSION:
self.sa = SESSION
else:
#init new sessions
engine = create_engine(self.dburi, echo=self.log_sql)
init_model(engine)
self.sa = Session()
Code refactoring,models renames...
r629
Implemented proposed changes from pull request #77
r2919 def create_tables(self, override=False):
fixes #324 proper largefiles extension enable
r1783 """
Create a auth database
renamed project to rhodecode
r547 """
Implemented proposed changes from pull request #77
r2919
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")
Implemented proposed changes from pull request #77
r2919 if self.tests:
fixed ldap settings creation, we need to fill in some bool defaults properly to make it work fine
r1138 destroy = True
else:
destroy = ask_ok('Are you sure to destroy old database ? [y/n]')
if not destroy:
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 print 'Nothing done.'
sys.exit(0)
fixed ldap settings creation, we need to fill in some bool defaults properly to make it work fine
r1138 if destroy:
Step6a for migrations from 1.3.6...
r2765 Base.metadata.drop_all()
changed dev and tests to postgressql for more error proof setup....
r964
renamed project to rhodecode
r547 checkfirst = not override
Step6a for migrations from 1.3.6...
r2765 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'
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 '*****************************************************\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:
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 print 'No upgrade performed'
sys.exit(0)
moved db migration do db manage script, added my cycles for upgrades
r839
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)
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 msg = ('Found current database under version '
'control with version %s' % curr_version)
moved db migration do db manage script, added my cycles for upgrades
r839
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
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 msg = ('Current database is not under version control. Setting '
'as version %s' % curr_version)
moved db migration do db manage script, added my cycles for upgrades
r839 api.version_control(db_uri, repository_path, curr_version)
migrations: fix old hook values...
r2779 notify(msg)
moved db migration do db manage script, added my cycles for upgrades
r839 if curr_version == __dbversion__:
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 print 'This database is already at the newest version'
sys.exit(0)
moved db migration do db manage script, added my cycles for upgrades
r839
Mads Kiilerich
invalidate: clear CacheInvalidation when upgrading
r3757 # clear cache keys
log.info("Clearing cache keys now...")
CacheInvalidation.clear_cache()
migration to 1.7.0
r3906 upgrade_steps = range(curr_version + 1, __dbversion__ + 1)
notify('attempting to do database upgrade from '
'version %s to version %s' % (curr_version, __dbversion__))
moved db migration do db manage script, added my cycles for upgrades
r839
fixes #324 proper largefiles extension enable
r1783 # CALL THE PROPER ORDER OF STEPS TO PERFORM FULL UPGRADE
migrations: fix old hook values...
r2779 _step = None
moved db migration do db manage script, added my cycles for upgrades
r839 for step in upgrade_steps:
migrations: fix old hook values...
r2779 notify('performing upgrade step %s' % step)
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 time.sleep(0.5)
migration to 1.7.0
r3906
api.upgrade(db_uri, repository_path, step)
Changed default behaviour of dbmanage to fix issues with continues...
r3907 notify('schema upgrade for step %s completed' % (step,))
migration to 1.7.0
r3906
migrations: fix old hook values...
r2779 _step = step
notify('upgrade to version %s successful' % _step)
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()
Don't catch all exceptions
r3631 except Exception:
fixed wrong migration schema...
r837 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)\
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 .filter(User.username == User.DEFAULT_USER)\
db migrations:...
r838 .one()
def_user.name = 'Anonymous'
def_user.lastname = 'User'
def_user.email = 'anonymous@rhodecode.org'
try:
self.sa.add(def_user)
self.sa.commit()
Don't catch all exceptions
r3631 except Exception:
db migrations:...
r838 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()
Don't catch all exceptions
r3631 except Exception:
implemented #89 google analytics code
r890 self.sa.rollback()
raise
fixed wrong migration schema...
r837
Implemented proposed changes from pull request #77
r2919 def admin_prompt(self, second=False):
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
Implemented proposed changes from pull request #77
r2919 defaults = self.cli_args
new setup-rhodecode command with optional defaults
r2284 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')
Step6a for migrations from 1.3.6...
r2765 from rhodecode.tests import TEST_USER_ADMIN_LOGIN, \
TEST_USER_ADMIN_PASS, TEST_USER_ADMIN_EMAIL, \
TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS, \
fixes #324 proper largefiles extension enable
r1783 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
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 def create_ui_settings(self, repo_store_path):
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
Implemented basic locking functionality....
r2726 self.sa.add(hooks1)
fixed wrong migration schema...
r837
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'
Implemented basic locking functionality....
r2726 self.sa.add(hooks2)
fixed wrong migration schema...
r837
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'
Implemented basic locking functionality....
r2726 self.sa.add(hooks3)
fixed wrong migration schema...
r837
hooks4 = RhodeCodeUi()
hooks4.ui_section = 'hooks'
Implemented basic locking functionality....
r2726 hooks4.ui_key = RhodeCodeUi.HOOK_PRE_PUSH
hooks4.ui_value = 'python:rhodecode.lib.hooks.pre_push'
self.sa.add(hooks4)
fixed wrong migration schema...
r837
Implemented basic locking functionality....
r2726 hooks5 = RhodeCodeUi()
hooks5.ui_section = 'hooks'
hooks5.ui_key = RhodeCodeUi.HOOK_PULL
hooks5.ui_value = 'python:rhodecode.lib.hooks.log_pull_action'
self.sa.add(hooks5)
hooks6 = RhodeCodeUi()
hooks6.ui_section = 'hooks'
hooks6.ui_key = RhodeCodeUi.HOOK_PRE_PULL
hooks6.ui_value = 'python:rhodecode.lib.hooks.pre_pull'
self.sa.add(hooks6)
fixed wrong migration schema...
r837
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 = ''
Implemented basic locking functionality....
r2726 self.sa.add(largefiles)
enabled largefiles extension by default in rhodecode
r1694
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 # set default largefiles cache dir, defaults to
# /repo location/.cache/largefiles
largefiles = RhodeCodeUi()
largefiles.ui_section = 'largefiles'
largefiles.ui_key = 'usercache'
largefiles.ui_value = os.path.join(repo_store_path, '.cache',
'largefiles')
self.sa.add(largefiles)
Add hgsubversion entry for RhodeCode UI (disabled by default)
r2705 # enable hgsubversion disabled by default
hgsubversion = RhodeCodeUi()
hgsubversion.ui_section = 'extensions'
hgsubversion.ui_key = 'hgsubversion'
hgsubversion.ui_value = ''
hgsubversion.ui_active = False
Implemented basic locking functionality....
r2726 self.sa.add(hgsubversion)
Add hgsubversion entry for RhodeCode UI (disabled by default)
r2705
Added form for controlling mercurial extensions...
r2708 # enable hggit disabled by default
hggit = RhodeCodeUi()
hggit.ui_section = 'extensions'
hggit.ui_key = 'hggit'
hggit.ui_value = ''
hggit.ui_active = False
self.sa.add(hggit)
fixed wrong migration schema...
r837
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 def create_auth_plugin_options(self, skip_existing=False):
"""
Create default auth plugin settings, and make it active
fixed wrong migration schema...
r837
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 :param skip_existing:
"""
fixed wrong migration schema...
r837
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 for k, v, t in [('auth_plugins', 'rhodecode.lib.auth_modules.auth_rhodecode', 'list'),
('auth_rhodecode_enabled', 'True', 'bool')]:
if skip_existing and RhodeCodeSetting.get_by_name(k) != None:
another major refactoring with session management
r1734 log.debug('Skipping option %s' % k)
continue
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 setting = RhodeCodeSetting(k, v, t)
another major refactoring with session management
r1734 self.sa.add(setting)
Code refactoring,models renames...
r629
Implemented #379 defaults settings page for creation of repositories...
r3056 def create_default_options(self, skip_existing=False):
"""Creates default settings"""
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 for k, v, t in [
('default_repo_enable_locking', False, 'bool'),
('default_repo_enable_downloads', False, 'bool'),
('default_repo_enable_statistics', False, 'bool'),
('default_repo_private', False, 'bool'),
('default_repo_type', 'hg', 'unicode')]:
Implemented #379 defaults settings page for creation of repositories...
r3056
replace equality comparision to None
r3889 if skip_existing and RhodeCodeSetting.get_by_name(k) is not None:
Implemented #379 defaults settings page for creation of repositories...
r3056 log.debug('Skipping option %s' % k)
continue
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 setting = RhodeCodeSetting(k, v, t)
Implemented #379 defaults settings page for creation of repositories...
r3056 self.sa.add(setting)
Added group permission autofix for older version of rhodecode which didn't have default permissions for repos groups
r1985 def fixup_groups(self):
New default permissions definition for user group create
r3734 def_usr = User.get_default_user()
Added group permission autofix for older version of rhodecode which didn't have default permissions for repos groups
r1985 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)
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 perm_obj = RepoGroupModel()._create_default_perms(g)
- Manage User’s Groups: create, delete, rename, add/remove users inside....
r3714 self.sa.add(perm_obj)
Added group permission autofix for older version of rhodecode which didn't have default permissions for repos groups
r1985
auto-healing of permissions for default user after upgrading from some old versions.
r2798 def reset_permissions(self, username):
"""
Resets permissions to default state, usefull when old systems had
bad permissions, we must clean them up
:param username:
"""
default_user = User.get_by_username(username)
if not default_user:
return
u2p = UserToPerm.query()\
.filter(UserToPerm.user == default_user).all()
fixed = False
fixed default permissions population during upgrades...
r3733 if len(u2p) != len(Permission.DEFAULT_USER_PERMISSIONS):
auto-healing of permissions for default user after upgrading from some old versions.
r2798 for p in u2p:
Session().delete(p)
fixed = True
self.populate_default_permissions()
return fixed
Added missing migrations, and move update_repoinfo to RepoModel...
r3309 def update_repo_info(self):
RepoModel.update_repoinfo()
Implemented proposed changes from pull request #77
r2919 def config_prompt(self, test_repo_path='', retries=3):
defaults = self.cli_args
new setup-rhodecode command with optional defaults
r2284 _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
accept that repos are read-only - very convenient for testing....
r3980 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
accept that repos are read-only - very convenient for testing....
r3980 log.error('Given path %s is not an absolute path' % (path,))
# check if path is at least readable.
if not os.access(path, os.R_OK):
path_ok = False
log.error('Given path %s is not readable' % (path,))
force and check for absolute path on rhodecode setup
r2112
accept that repos are read-only - very convenient for testing....
r3980 # check write access, warn user about non writeable paths
force and check for absolute path on rhodecode setup
r2112 elif not os.access(path, os.W_OK) and path_ok:
accept that repos are read-only - very convenient for testing....
r3980 log.warn('No write permission to given path %s' % (path,))
if not ask_ok('Given path %s is not writeable, do you want to '
'continue with read only mode ? [y/n]' % (path,)):
log.error('Canceled by user')
sys.exit(-1)
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')
Mads Kiilerich
follow Python conventions for boolean values...
r3625 if not path_ok:
fixes #120 websetup command runs os.access on given path checking for write access
r1094 retries -= 1
return self.config_prompt(test_repo_path, retries)
use normpath when comparing paths used to determine if directory is a symlink, it's a part of pull-request #77
r2918 real_path = os.path.normpath(os.path.realpath(path))
Detect symlink in given repository path, and ask user if stored path should be were the symlink points
r2819
use normpath when comparing paths used to determine if directory is a symlink, it's a part of pull-request #77
r2918 if real_path != os.path.normpath(path):
Detect symlink in given repository path, and ask user if stored path should be were the symlink points
r2819 if not ask_ok(('Path looks like a symlink, Rhodecode will store '
accept that repos are read-only - very convenient for testing....
r3980 'given path as %s ? [y/n]') % (real_path,)):
Detect symlink in given repository path, and ask user if stored path should be were the symlink points
r2819 log.error('Canceled by user')
sys.exit(-1)
return real_path
fixes #120 websetup command runs os.access on given path checking for write access
r1094
def create_settings(self, path):
Code refactoring,models renames...
r629
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 self.create_ui_settings(path)
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
Add default for dashbord items and create default...
r3909 ui_config = [
('web', 'push_ssl', 'false'),
('web', 'allow_archive', 'gz zip bz2'),
('web', 'allow_push', '*'),
('web', 'baseurl', '/'),
('paths', '/', path),
#('phases', 'publish', 'false')
]
fix: add UI settings to session
r3911 for section, key, value in ui_config:
Add default for dashbord items and create default...
r3909 ui_conf = RhodeCodeUi()
setattr(ui_conf, 'ui_section', section)
setattr(ui_conf, 'ui_key', key)
setattr(ui_conf, 'ui_value', value)
fix: add UI settings to session
r3911 self.sa.add(ui_conf)
Code refactoring,models renames...
r629
Add default for dashbord items and create default...
r3909 settings = [
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 ('realm', 'RhodeCode', 'unicode'),
('title', '', 'unicode'),
('ga_code', '', 'unicode'),
('show_public_icon', True, 'bool'),
('show_private_icon', True, 'bool'),
('stylify_metatags', False, 'bool'),
('dashboard_items', 100, 'int'),
('admin_grid_items', 25, 'int'),
('show_version', True, 'bool'),
('use_gravatar', True, 'bool'),
('gravatar_url', User.DEFAULT_GRAVATAR_URL, 'unicode'),
('clone_uri_tmpl', Repository.DEFAULT_CLONE_URI, 'unicode'),
('update_url', RhodeCodeSetting.DEFAULT_UPDATE_URL, 'unicode'),
Add default for dashbord items and create default...
r3909 ]
for key, val, type_ in settings:
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 sett = RhodeCodeSetting(key, val, type_)
Add default for dashbord items and create default...
r3909 self.sa.add(sett)
fixed wrong migration schema...
r837
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 self.create_auth_plugin_options()
Implemented #379 defaults settings page for creation of repositories...
r3056 self.create_default_options()
fixed wrong migration schema...
r837
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',
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 active=True, admin=admin,
extern_type="rhodecode")
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.
Added --no-public-access / --public-access flags into setup-rhodecode...
r4028 user = UserModel().create_or_update(username=User.DEFAULT_USER,
password=str(uuid.uuid1())[:20],
email='anonymous@rhodecode.org',
firstname='Anonymous',
lastname='User')
# based on configuration options activate/deactive this user which
# controlls anonymous access
if self.cli_args.get('public_access') is False:
log.info('Public access disabled')
user.active = False
Session().add(user)
Session().commit()
another major refactoring with session management
r1734
renamed project to rhodecode
r547 def create_permissions(self):
fixed default permissions population during upgrades...
r3733 """
Creates all permissions defined in the system
"""
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)
New default permissions definition for user group create
r3734 log.info('creating permissions')
PermissionModel(self.sa).create_permissions()
renamed project to rhodecode
r547
def populate_default_permissions(self):
fixed default permissions population during upgrades...
r3733 """
Populate default permissions. It will create only the default
permissions that are missing, and not alter already defined ones
"""
renamed project to rhodecode
r547 log.info('creating default user permissions')
fixed default permissions population during upgrades...
r3733 PermissionModel(self.sa).create_default_permissions(user=User.DEFAULT_USER)
warn user about not using waitress on python2.5
r2827
run waitress check on startup
r3232 @staticmethod
def check_waitress():
warn user about not using waitress on python2.5
r2827 """
Function executed at the end of setup
"""
if not __py_version__ >= (2, 6):
notify('Python2.5 detected, please switch '
'egg:waitress#main -> egg:Paste#http '
white space cleanup
r2907 'in your .ini file')