Changeset - 07f248329a3b
[Not reviewed]
beta
0 1 1
Marcin Kuzminski - 15 years ago 2010-12-31 18:58:26
marcin@python-works.com
updated migration for version 1.2
2 files changed with 91 insertions and 2 deletions:
0 comments (0 inline, 0 general)
rhodecode/lib/db_manage.py
Show inline comments
 
@@ -103,9 +103,8 @@ class DbManage(object):
 

	
 
    def upgrade(self):
 
        """Upgrades given database schema to given revision following 
 
        all needed steps,  
 
        all needed steps, to perform the upgrade
 
        
 
        :param revision: revision to upgrade to
 
        """
 

	
 
        from rhodecode.lib.dbmigrate.migrate.versioning import api
 
@@ -142,6 +141,9 @@ class DbManage(object):
 
        # UPGRADE STEPS
 
        #======================================================================
 
        class UpgradeSteps(object):
 
            """Those steps follow schema versions so for example schema 
 
            for example schema with seq 002 == step_2 and so on.
 
            """
 

	
 
            def __init__(self, klass):
 
                self.klass = klass
rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py
Show inline comments
 
new file 100644
 
import logging
 
import datetime
 

	
 
from sqlalchemy import *
 
from sqlalchemy.exc import DatabaseError
 
from sqlalchemy.orm import relation, backref, class_mapper
 
from sqlalchemy.orm.session import Session
 
from rhodecode.model.meta import Base
 
from rhodecode.model.db import BaseModel
 

	
 
from rhodecode.lib.dbmigrate.migrate import *
 

	
 
log = logging.getLogger(__name__)
 

	
 
def upgrade(migrate_engine):
 
    """ Upgrade operations go here. 
 
    Don't create your own engine; bind migrate_engine to your metadata
 
    """
 

	
 
    #==========================================================================
 
    # Add table `groups``
 
    #==========================================================================
 
    tblname = 'groups'
 

	
 
    class Group(Base, BaseModel):
 
        __tablename__ = 'groups'
 
        __table_args__ = (UniqueConstraint('group_name'), {'useexisting':True},)
 

	
 
        group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
 
        group_name = Column("group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
 
        group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None)
 

	
 
        parent_group = relation('Group', remote_side=group_id)
 

	
 

	
 
        def __init__(self, group_name='', parent_group=None):
 
            self.group_name = group_name
 
            self.parent_group = parent_group
 

	
 
        def __repr__(self):
 
            return "<%s('%s:%s')>" % (self.__class__.__name__, self.group_id,
 
                                      self.group_name)
 

	
 
    Base.metadata.tables[tblname].create(migrate_engine)
 

	
 
    #==========================================================================
 
    # Add table `group_to_perm`
 
    #==========================================================================
 
    tblname = 'group_to_perm'
 

	
 
    class GroupToPerm(Base, BaseModel):
 
        __tablename__ = 'group_to_perm'
 
        __table_args__ = (UniqueConstraint('group_id', 'permission_id'), {'useexisting':True})
 

	
 
        group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
 
        user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
 
        permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
 
        group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None)
 

	
 
        user = relation('User')
 
        permission = relation('Permission')
 
        group = relation('Group')
 

	
 
    Base.metadata.tables[tblname].create(migrate_engine)
 

	
 
    #==========================================================================
 
    # Upgrade of `repositories` table
 
    #==========================================================================    
 
    tblname = 'repositories'
 
    tbl = Table(tblname, MetaData(bind=migrate_engine), autoload=True,
 
                    autoload_with=migrate_engine)
 

	
 
    #ADD group_id column#
 
    group_id = Column("group_id", Integer(), ForeignKey(u'groups.group_id'),
 
                  nullable=True, unique=False, default=None)
 

	
 
    group_id.create(tbl, populate_default=True)
 

	
 

	
 
    return
 

	
 

	
 
def downgrade(migrate_engine):
 
    meta = MetaData()
 
    meta.bind = migrate_engine
 

	
 

	
0 comments (0 inline, 0 general)