##// END OF EJS Templates
old style: use old style.css and contextbar.css and no bootstrap and no fontawesome
old style: use old style.css and contextbar.css and no bootstrap and no fontawesome

File last commit:

r4116:ffd45b18 rhodecode-2.2.5-gpl
r4139:ec7e44bf rhodecode-2.2.5-gpl
Show More
008_version_1_5_0.py
128 lines | 4.3 KiB | text/x-python | PythonLexer
implemented #663 Admin/permission: specify default repogroup perms...
r3052 import logging
import datetime
from sqlalchemy import *
from sqlalchemy.exc import DatabaseError
Implemented better support for Wildcard queries...
r3063 from sqlalchemy.orm import relation, backref, class_mapper, joinedload
implemented #663 Admin/permission: specify default repogroup perms...
r3052 from sqlalchemy.orm.session import Session
from sqlalchemy.ext.declarative import declarative_base
from rhodecode.lib.dbmigrate.migrate import *
from rhodecode.lib.dbmigrate.migrate.changeset import *
from rhodecode.model.meta import Base
from rhodecode.model import meta
Migration upgrades cache for lightweight dashboard...
r3148 from rhodecode.lib.dbmigrate.versions import _reset_base
implemented #663 Admin/permission: specify default repogroup perms...
r3052
log = logging.getLogger(__name__)
def upgrade(migrate_engine):
"""
Upgrade operations go here.
Don't create your own engine; bind migrate_engine to your metadata
"""
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 _reset_base(migrate_engine)
from rhodecode.lib.dbmigrate.schema import db_1_5_0
Implemented better support for Wildcard queries...
r3063 #==========================================================================
# USER LOGS
#==========================================================================
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116
tbl = db_1_5_0.UserLog.__table__
Implemented better support for Wildcard queries...
r3063 username = Column("username", String(255, convert_unicode=False,
assert_unicode=None), nullable=True,
unique=None, default=None)
# create username column
username.create(table=tbl)
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 _Session = meta.Session()
fixed migrations
r3086 ## after adding that column fix all usernames
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 users_log = _Session.query(db_1_5_0.UserLog)\
.options(joinedload(db_1_5_0.UserLog.user))\
.options(joinedload(db_1_5_0.UserLog.repository)).all()
fixed migrations
r3086
for entry in users_log:
entry.username = entry.user.username
_Session.add(entry)
_Session.commit()
#alter username to not null
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 tbl_name = db_1_5_0.UserLog.__tablename__
remove not null from user_id column for users log archiving
r3065 tbl = Table(tbl_name,
MetaData(bind=migrate_engine), autoload=True,
autoload_with=migrate_engine)
fixed migrations
r3086 col = tbl.columns.username
remove not null from user_id column for users log archiving
r3065
# remove nullability from revision field
fixed migrations
r3086 col.alter(nullable=False)
implemented #663 Admin/permission: specify default repogroup perms...
r3052
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 # issue fixups
fixups(db_1_5_0, meta.Session)
Implemented #379 defaults settings page for creation of repositories...
r3056
implemented #663 Admin/permission: specify default repogroup perms...
r3052 def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116
def fixups(models, _SESSION):
# ** create default permissions ** #
#=====================================
for p in models.Permission.PERMS:
if not models.Permission.get_by_key(p[0]):
new_perm = models.Permission()
new_perm.permission_name = p[0]
new_perm.permission_longname = p[0] #translation err with p[1]
print 'Creating new permission %s' % p[0]
_SESSION().add(new_perm)
_SESSION().commit()
# ** populate default permissions ** #
#=====================================
user = models.User.query().filter(models.User.username == 'default').scalar()
def _make_perm(perm):
new_perm = models.UserToPerm()
new_perm.user = user
new_perm.permission = models.Permission.get_by_key(perm)
return new_perm
def _get_group(perm_name):
return '.'.join(perm_name.split('.')[:1])
perms = models.UserToPerm.query().filter(models.UserToPerm.user == user).all()
defined_perms_groups = map(_get_group,
(x.permission.permission_name for x in perms))
log.debug('GOT ALREADY DEFINED:%s' % perms)
DEFAULT_PERMS = models.Permission.DEFAULT_USER_PERMISSIONS
# for every default permission that needs to be created, we check if
# it's group is already defined, if it's not we create default perm
for perm_name in DEFAULT_PERMS:
gr = _get_group(perm_name)
if gr not in defined_perms_groups:
log.debug('GR:%s not found, creating permission %s'
% (gr, perm_name))
new_perm = _make_perm(perm_name)
_SESSION().add(new_perm)
_SESSION().commit()
# ** create default options ** #
#===============================
skip_existing = True
for k, v in [
('default_repo_enable_locking', False),
('default_repo_enable_downloads', False),
('default_repo_enable_statistics', False),
('default_repo_private', False),
('default_repo_type', 'hg')]:
if skip_existing and models.RhodeCodeSetting.get_by_name(k) is not None:
log.debug('Skipping option %s' % k)
continue
setting = models.RhodeCodeSetting(k, v)
_SESSION().add(setting)
_SESSION().commit()