Blame alembic/versions/26af5c3602a0_add_the_default_hook_to_all_projects.py

Pierre-Yves Chibon 83efe2
"""Add the default hook to all projects
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
Revision ID: 26af5c3602a0
Pierre-Yves Chibon 83efe2
Revises: 644ef887bb6f
Pierre-Yves Chibon 83efe2
Create Date: 2016-10-08 12:14:31.155018
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
"""
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 67d1cc
from __future__ import print_function, absolute_import
Vadim Rutkovsky 9b6a62
Pierre-Yves Chibon 83efe2
# revision identifiers, used by Alembic.
Pierre-Yves Chibon 83efe2
revision = '26af5c3602a0'
Pierre-Yves Chibon 83efe2
down_revision = '644ef887bb6f'
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
from alembic import op
Pierre-Yves Chibon 83efe2
import sqlalchemy as sa
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
try:
Pierre-Yves Chibon 83efe2
    import pagure.lib.plugins
Pierre-Yves Chibon 83efe2
    from pagure.lib import model
Pierre-Yves Chibon 83efe2
except ImportError:
Pierre-Yves Chibon 83efe2
    import sys
Pierre-Yves Chibon 83efe2
    sys.path.insert(0, '.')
Pierre-Yves Chibon 83efe2
    import pagure.lib.plugins
Pierre-Yves Chibon 83efe2
    from pagure.lib import model
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
def upgrade():
Pierre-Yves Chibon 83efe2
    ''' Add the default hook to all existing projects.
Pierre-Yves Chibon 83efe2
    '''
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
    engine = op.get_bind()
Pierre-Yves Chibon 83efe2
    Session = sa.orm.scoped_session(sa.orm.sessionmaker())
Pierre-Yves Chibon 83efe2
    Session.configure(bind=engine)
Pierre-Yves Chibon 83efe2
    session = Session()
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
    # Update all the existing projects
Pierre-Yves Chibon 83efe2
    for project in session.query(model.Project).all():
Vadim Rutkovsky 9b6a62
        print('Installing %s' % project.fullname)
Pierre-Yves Chibon 83efe2
        # Install the default hook
Pierre-Yves Chibon 83efe2
        plugin = pagure.lib.plugins.get_plugin('default')
Pierre-Yves Chibon 83efe2
        dbobj = plugin.db_object()
Pierre-Yves Chibon 83efe2
        dbobj.active = True
Pierre-Yves Chibon 83efe2
        dbobj.project_id = project.id
Pierre-Yves Chibon 83efe2
        session.add(dbobj)
Pierre-Yves Chibon 83efe2
        session.flush()
Pierre-Yves Chibon 83efe2
        plugin.set_up(project)
Pierre-Yves Chibon 83efe2
        plugin.install(project, dbobj)
Pierre-Yves Chibon 9ebb18
        # Save the change
Pierre-Yves Chibon 9ebb18
        session.commit()
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
def downgrade():
Pierre-Yves Chibon 83efe2
    engine = op.get_bind()
Pierre-Yves Chibon 83efe2
    Session = sa.orm.scoped_session(sa.orm.sessionmaker())
Pierre-Yves Chibon 83efe2
    Session.configure(bind=engine)
Pierre-Yves Chibon 83efe2
    session = Session()
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 83efe2
    # Update all the existing projects
Pierre-Yves Chibon 83efe2
    for project in session.query(model.Project).all():
Pierre-Yves Chibon 83efe2
        # Install the default hook
Pierre-Yves Chibon 83efe2
        plugin = pagure.lib.plugins.get_plugin('default')
Pierre-Yves Chibon 83efe2
        dbobj = plugin.db_object()
Pierre-Yves Chibon 83efe2
        dbobj.active = False
Pierre-Yves Chibon 83efe2
        dbobj.project_id = project.id
Pierre-Yves Chibon 83efe2
        session.add(dbobj)
Pierre-Yves Chibon 83efe2
        session.flush()
Pierre-Yves Chibon 83efe2
        plugin.remove(project, dbobj)
Pierre-Yves Chibon 83efe2
Pierre-Yves Chibon 9ebb18
        # Save the change
Pierre-Yves Chibon 9ebb18
        session.commit()