"""Add namespace to project Revision ID: 350efb3f6baf Revises: 1640c7d75e5f Create Date: 2016-08-30 22:02:07.645138 """ # revision identifiers, used by Alembic. revision = '350efb3f6baf' down_revision = '1640c7d75e5f' from alembic import op import sqlalchemy as sa try: from pagure.lib import model except ImportError: import sys sys.path.insert(0, '.') from pagure.lib import model def upgrade(): ''' Add the column namespace to the table projects. ''' op.add_column( 'projects', sa.Column('namespace', sa.String(255), nullable=True, index=True) ) # Update all the existing projects engine = op.get_bind() Session = sa.orm.scoped_session(sa.orm.sessionmaker()) Session.configure(bind=engine) session = Session() for project in session.query(model.Project).filter( model.Project.name.ilike('%/%')).all(): nspace, name = project.name.split('/', 1) project.name = name project.namespace = nspace session.add(project) session.commit() def downgrade(): ''' Remove the column namespace from the table projects. ''' # Update all the existing projects engine = op.get_bind() Session = sa.orm.scoped_session(sa.orm.sessionmaker()) Session.configure(bind=engine) session = Session() for project in session.query(model.Project).filter( model.Project.namespace != None).all(): if project.namespace.strip(): project.name = '%s/%s' % (project.namespace, project.name) session.add(project) session.commit() op.drop_column('projects', 'namespace')