Files @ 9dd726706178
Branch filter:

Location: kallithea/rhodecode/lib/dbmigrate/versions/005_version_1_3_0.py - annotation

Bradley M. Kuhn
Complete copyright notices for web interface; change footer to link to them.

The original copyright notice found in the footer was not accurate as it
included only one of the many copyright holders in this project. This change
creates an "about" page, which currently contains just the copyright and
license information. It links to repository for additional potential copyright
holders not listed on the about page.

Unlisted contributors are mentioned in template comments.

Html links for Kallithea is fixed and we link to Conservancy.

Display of version information in the footer is improved.
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.lib.dbmigrate.migrate import *
from rhodecode.lib.dbmigrate.migrate.changeset import *

from rhodecode.model.meta import Base

log = logging.getLogger(__name__)


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

    #==========================================================================
    # Change unique constraints of table `repo_to_perm`
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_3_0 import UserRepoToPerm
    tbl = UserRepoToPerm().__table__
    new_cons = UniqueConstraint('user_id', 'repository_id', 'permission_id', table=tbl)
    new_cons.create()
    old_cons = None
    if migrate_engine.name in ['mysql']:
        old_cons = UniqueConstraint('user_id', 'repository_id', table=tbl, name="user_id")
    elif migrate_engine.name in ['postgresql']:
        old_cons = UniqueConstraint('user_id', 'repository_id', table=tbl)
    else:
        # sqlite doesn't support dropping constraints...
        print """Please manually drop UniqueConstraint('user_id', 'repository_id')"""

    if old_cons:
        try:
            old_cons.drop()
        except Exception, e:
            # we don't care if this fails really... better to pass migration than
            # leave this in intermidiate state
            print 'Failed to remove Unique for user_id, repository_id reason %s' % e


    #==========================================================================
    # fix uniques of table `user_repo_group_to_perm`
    #==========================================================================
    from rhodecode.lib.dbmigrate.schema.db_1_3_0 import UserRepoGroupToPerm
    tbl = UserRepoGroupToPerm().__table__
    new_cons = UniqueConstraint('group_id', 'permission_id', 'user_id', table=tbl)
    new_cons.create()
    old_cons = None

    # fix uniqueConstraints
    if migrate_engine.name in ['mysql']:
        #mysql is givinig troubles here...
        old_cons = UniqueConstraint('group_id', 'permission_id', table=tbl, name="group_id")
    elif migrate_engine.name in ['postgresql']:
        old_cons = UniqueConstraint('group_id', 'permission_id', table=tbl, name='group_to_perm_group_id_permission_id_key')
    else:
        # sqlite doesn't support dropping constraints...
        print """Please manually drop UniqueConstraint('group_id', 'permission_id')"""

    if old_cons:
        try:
            old_cons.drop()
        except Exception, e:
            # we don't care if this fails really... better to pass migration than
            # leave this in intermidiate state
            print 'Failed to remove Unique for user_id, repository_id reason %s' % e

    return


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