Mercurial > kallithea
view rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py @ 900:07f248329a3b beta
updated migration for version 1.2
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 31 Dec 2010 18:58:26 +0100 |
parents | |
children | 2f83756f3041 |
line wrap: on
line source
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