Files @ 850b2dfe2c7a
Branch filter:

Location: kallithea/rhodecode/lib/dbmigrate/versions/006_version_1_4_0.py - annotation

Marcin Kuzminski
typo-fix
80dc21487314
80dc21487314
80dc21487314
80dc21487314
80dc21487314
80dc21487314
80dc21487314
186b1cf7f759
80dc21487314
80dc21487314
80dc21487314
80dc21487314
80dc21487314
186b1cf7f759
80dc21487314
80dc21487314
80dc21487314
80dc21487314
80dc21487314
186b1cf7f759
186b1cf7f759
80dc21487314
80dc21487314
80dc21487314
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
850b2dfe2c7a
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
7562f46b1e90
7562f46b1e90
7562f46b1e90
7562f46b1e90
7562f46b1e90
7562f46b1e90
7562f46b1e90
7562f46b1e90
7562f46b1e90
7562f46b1e90
7562f46b1e90
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
186b1cf7f759
80dc21487314
80dc21487314
80dc21487314
80dc21487314
80dc21487314
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 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

log = logging.getLogger(__name__)


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

    #==========================================================================
    # USEREMAILMAP
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_4_0 import UserEmailMap
    tbl = UserEmailMap.__table__
    tbl.create()
    #==========================================================================
    # PULL REQUEST
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_4_0 import PullRequest
    tbl = PullRequest.__table__
    tbl.create()

    #==========================================================================
    # PULL REQUEST REVIEWERS
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_4_0 import PullRequestReviewers
    tbl = PullRequestReviewers.__table__
    tbl.create()

    #==========================================================================
    # CHANGESET STATUS
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_4_0 import ChangesetStatus
    tbl = ChangesetStatus.__table__
    tbl.create()

    ## RESET COMPLETLY THE metadata for sqlalchemy to use the 1_3_0 Base 
    Base = declarative_base()
    Base.metadata.clear()
    Base.metadata = MetaData()
    Base.metadata.bind = migrate_engine
    meta.Base = Base

    #==========================================================================
    # USERS TABLE
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_3_0 import User
    tbl = User.__table__

    # change column name -> firstname
    col = User.__table__.columns.name
    col.alter(index=Index('u_username_idx', 'username'))
    col.alter(index=Index('u_email_idx', 'email'))
    col.alter(name="firstname", table=tbl)

    inherit_default_permissions = Column("users_group_inherit_default_permission",
                                         Boolean(), nullable=True, unique=None,
                                         default=True)
    inherit_default_permissions.create(table=tbl)
    inherit_default_permissions.alter(nullable=False, default=True, table=tbl)

    #==========================================================================
    # GROUPS TABLE
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_3_0 import RepoGroup
    tbl = RepoGroup.__table__
    inherit_default_permissions = Column("inherit_default_permissions",
                                         Boolean(), nullable=True, unique=None,
                                         default=True)
    inherit_default_permissions.create(table=tbl)
    inherit_default_permissions.alter(nullable=False, default=True, table=tbl)

    #==========================================================================
    # REPOSITORIES
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_3_0 import Repository
    tbl = Repository.__table__

    enable_locking = Column("enable_locking", Boolean(), nullable=True,
                            unique=None, default=False)
    enable_locking.create(table=tbl)
    enable_locking.alter(nullable=False, default=False, table=tbl)

    _locked = Column("locked", String(255), nullable=True, unique=False,
                     default=None)
    _locked.create(table=tbl)

    landing_rev = Column("landing_revision", String(255), nullable=True,
                         unique=False, default='tip')
    landing_rev.create(table=tbl)
    landing_rev.alter(nullable=False, default='tip', table=tbl)

    #==========================================================================
    # GROUPS
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_3_0 import RepoGroup
    tbl = RepoGroup.__table__
    enable_locking = Column("enable_locking", Boolean(), nullable=True,
                            unique=None, default=False)
    enable_locking.create(table=tbl)
    enable_locking.alter(nullable=False, default=False)

    #==========================================================================
    # CACHE INVALIDATION
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_3_0 import CacheInvalidation
    tbl = CacheInvalidation.__table__

    # change column name -> firstname
    col = CacheInvalidation.__table__.columns.cache_key
    col.alter(index=Index('key_idx', 'cache_key'))

    #==========================================================================
    # NOTIFICATION
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_3_0 import Notification
    tbl = Notification.__table__

    # change column name -> firstname
    col = Notification.__table__.columns.type
    col.alter(index=Index('notification_type_idx', 'type'),)

    #==========================================================================
    # CHANGESET_COMMENTS
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_3_0 import ChangesetComment

    tbl = ChangesetComment.__table__

    col = ChangesetComment.__table__.columns.revision
    col.alter(index=Index('cc_revision_idx', 'revision'),)

    hl_lines = Column('hl_lines', Unicode(512), nullable=True)
    hl_lines.create(table=tbl)

    created_on = Column('created_on', DateTime(timezone=False), nullable=True,
                        default=datetime.datetime.now)
    created_on.create(table=tbl)
    created_on.alter(nullable=False, default=datetime.datetime.now)
    modified_at = Column('modified_at', DateTime(timezone=False), nullable=False,
                         default=datetime.datetime.now)
    modified_at.alter(type=DateTime(timezone=False), table=tbl)

    pull_request_id = Column("pull_request_id", Integer(),
                             ForeignKey('pull_requests.pull_request_id'),
                             nullable=True)
    pull_request_id.create(table=tbl)
    ## RESET COMPLETLY THE metadata for sqlalchemy back after using 1_3_0
    Base = declarative_base()
    Base.metadata.clear()
    Base.metadata = MetaData()
    Base.metadata.bind = migrate_engine
    meta.Base = Base


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