1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- """Add close status
- Revision ID: 644ef887bb6f
- Revises: 368fd931cf7f
- Create Date: 2016-10-04 15:38:41.908679
- """
- # revision identifiers, used by Alembic.
- revision = '644ef887bb6f'
- down_revision = '368fd931cf7f'
- 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 _close_status to the table projects.
- '''
- op.add_column(
- 'projects',
- sa.Column('_close_status', sa.Text, nullable=True)
- )
- op.add_column(
- 'issues',
- sa.Column('close_status', sa.Text, nullable=True)
- )
- engine = op.get_bind()
- Session = sa.orm.scoped_session(sa.orm.sessionmaker())
- Session.configure(bind=engine)
- session = Session()
- # Update all the existing projects
- statuses = ['Invalid', 'Insufficient data', 'Fixed', 'Duplicate']
- for project in session.query(model.Project).all():
- project.close_status = statuses
- session.add(project)
- session.commit()
- # Add the status 'Closed' for issues
- ticket_stat = model.StatusIssue(status='Closed')
- session.add(ticket_stat)
- session.commit()
- # Remove the old status
- op.execute('''DELETE FROM "status_issue" WHERE "status" NOT IN ('Open', 'Closed'); ''')
- # Set the close_status for all the closed tickets
- op.execute('''UPDATE "issues" SET "close_status"=status where status != 'Open'; ''')
- # Mark all the tickets as closed
- op.execute('''UPDATE "issues" SET status='Closed' where status != 'Open'; ''')
- def downgrade():
- ''' Add the column _close_status to the table projects.
- '''
- engine = op.get_bind()
- Session = sa.orm.scoped_session(sa.orm.sessionmaker())
- Session.configure(bind=engine)
- session = Session()
- statuses = ['Invalid', 'Insufficient data', 'Fixed', 'Duplicate']
- for status in statuses:
- ticket_stat = model.StatusIssue(status=status)
- session.add(ticket_stat)
- session.commit()
- # Set the close_status for all the closed tickets
- op.execute('''UPDATE "issues" SET status=close_status where status != 'Open'; ''')
- # Remove the old status
- op.execute('''DELETE FROM "status_issue" WHERE status = 'Closed'; ''')
- op.drop_column('projects', '_close_status')
- op.drop_column('issues', 'close_status')
|