def do_upgrade():
    """Upgrade recipe.

    Adds two new columns (password_salt and password_scheme) and migrates
    emails to password salt.
    """
    op.add_column('user', db.Column('password_salt', db.String(length=255),
                                    nullable=True))
    op.add_column('user', db.Column('password_scheme', db.String(length=50),
                                    nullable=False))

    # Temporary column needed for data migration
    op.add_column('user', db.Column('new_password', db.String(length=255)))

    # Migrate emails to password_salt
    m = db.MetaData(bind=db.engine)
    m.reflect()
    u = m.tables['user']

    conn = db.engine.connect()
    conn.execute(u.update().values(
        password_salt=u.c.email,
        password_scheme='invenio_aes_encrypted_email'
    ))

    # Migrate password blob to password varchar.
    for row in conn.execute(select([u])):
        # NOTE: Empty string passwords were stored as empty strings
        # instead of a hashed version, hence they must be treated differently.
        legacy_pw = row[u.c.password] or mysql_aes_encrypt(row[u.c.email], "")

        stmt = u.update().where(
            u.c.id == row[u.c.id]
        ).values(
            new_password=hashlib.sha256(legacy_pw).hexdigest()
        )
        conn.execute(stmt)

    # Create index
    op.create_index(
        op.f('ix_user_password_scheme'),
        'user',
        ['password_scheme'],
        unique=False
    )

    # Drop old database column and rename new.
    op.drop_column('user', 'password')
    op.alter_column(
        'user', 'new_password',
        new_column_name='password',
        existing_type=mysql.VARCHAR(255),
        existing_nullable=True,
    )
def do_upgrade():
    """Implement your upgrades here."""
    try:
        op.drop_index('ix_usergroup_name', table_name='usergroup')
    except OperationalError:
        pass
    try:
        op.drop_index('name', table_name='usergroup')
    except OperationalError:
        pass
    op.create_index(op.f('ix_usergroup_name'), 'usergroup', ['name'],
                    unique=True)
示例#3
0
def do_upgrade():
    """Upgrade recipe.

    Adds two new columns (password_salt and password_scheme) and migrates
    emails to password salt.
    """
    op.add_column(
        'user', db.Column('password_salt',
                          db.String(length=255),
                          nullable=True))
    op.add_column(
        'user',
        db.Column('password_scheme', db.String(length=50), nullable=False))

    # Temporary column needed for data migration
    op.add_column('user', db.Column('new_password', db.String(length=255)))

    # Migrate emails to password_salt
    m = db.MetaData(bind=db.engine)
    m.reflect()
    u = m.tables['user']

    conn = db.engine.connect()
    conn.execute(
        u.update().values(password_salt=u.c.email,
                          password_scheme='invenio_aes_encrypted_email'))

    # Migrate password blob to password varchar.
    for row in conn.execute(select([u])):
        # NOTE: Empty string passwords were stored as empty strings
        # instead of a hashed version, hence they must be treated differently.
        legacy_pw = row[u.c.password] or mysql_aes_encrypt(row[u.c.email], "")

        stmt = u.update().where(u.c.id == row[u.c.id]).values(
            new_password=hashlib.sha256(legacy_pw).hexdigest())
        conn.execute(stmt)

    # Create index
    op.create_index(op.f('ix_user_password_scheme'),
                    'user', ['password_scheme'],
                    unique=False)

    # Drop old database column and rename new.
    op.drop_column('user', 'password')
    op.alter_column(
        'user',
        'new_password',
        new_column_name='password',
        existing_type=mysql.VARCHAR(255),
        existing_nullable=True,
    )
示例#4
0
def do_upgrade():
    """Implement your upgrades here."""
    # table sbmFORMATEXTENSION

    # add "id" column
    op.add_column('sbmFORMATEXTENSION',
                  db.Column('id', db.Integer(), nullable=False))
    # set all ids
    records = run_sql("""SELECT FILE_FORMAT, FILE_EXTENSION FROM """
                      """sbmFORMATEXTENSION AS sbm """
                      """ORDER BY sbm.FILE_FORMAT, sbm.FILE_EXTENSION""")
    for index, rec in enumerate(records):
        run_sql(
            """UPDATE sbmFORMATEXTENSION """
            """SET id = %s """
            """ WHERE FILE_FORMAT = %s AND """
            """       FILE_EXTENSION = %s """, (index + 1, rec[0], rec[1]))
    # remove primary key
    try:
        op.drop_constraint(None, 'sbmFORMATEXTENSION', type_='primary')
    except OperationalError:
        # the primary key is already dropped
        warnings.warn("""Primary key of sbmFORMATEXTENSION """
                      """table has been already dropped.""")
    # set id as new primary key
    op.create_primary_key('pk_sbmFORMATEXTENSION_id', 'sbmFORMATEXTENSION',
                          ['id'])
    # set id as autoincrement
    op.alter_column('sbmFORMATEXTENSION',
                    'id',
                    existing_type=db.Integer(),
                    existing_nullable=False,
                    autoincrement=True)
    # create indices
    op.create_index('sbmformatextension_file_extension_idx',
                    'sbmFORMATEXTENSION',
                    columns=['FILE_EXTENSION'],
                    unique=False,
                    mysql_length=10)
    op.create_index('sbmformatextension_file_format_idx',
                    'sbmFORMATEXTENSION',
                    columns=['FILE_FORMAT'],
                    unique=False,
                    mysql_length=50)

    # table sbmGFILERESULT

    # add "id" column
    op.add_column('sbmGFILERESULT',
                  db.Column('id', db.Integer(), nullable=False))
    # set all ids
    records = run_sql("""SELECT FORMAT, RESULT FROM """
                      """sbmGFILERESULT AS sbm """
                      """ORDER BY sbm.FORMAT, sbm.RESULT""")
    for index, rec in enumerate(records):
        run_sql(
            """UPDATE sbmGFILERESULT """
            """SET id = %s """
            """ WHERE FORMAT = %s AND """
            """       RESULT = %s """, (index + 1, rec[0], rec[1]))
    # remove primary key
    try:
        op.drop_constraint(None, 'sbmGFILERESULT', type_='primary')
    except OperationalError:
        # the primary key is already dropped
        warnings.warn("""Primary key of sbmGFILERESULT """
                      """table has been already dropped.""")
    # set id as new primary key
    op.create_primary_key('pk_sbmGFILERESULT_id', 'sbmGFILERESULT', ['id'])
    # set id as autoincrement
    op.alter_column('sbmGFILERESULT',
                    'id',
                    existing_type=db.Integer(),
                    existing_nullable=False,
                    autoincrement=True)
    # create indices
    op.create_index('sbmgfileresult_format_idx',
                    'sbmGFILERESULT',
                    columns=['FORMAT'],
                    unique=False,
                    mysql_length=50)
    op.create_index('sbmgfileresult_result_idx',
                    'sbmGFILERESULT',
                    columns=['RESULT'],
                    unique=False,
                    mysql_length=50)
示例#5
0
def do_upgrade():
    """Implement your upgrades here."""
    op.create_index('ik_last_updated', 'inspire_prod_records', ['last_updated'])
    op.create_index('ik_successful', 'inspire_prod_records', ['successful'])
def do_upgrade():
    """Implement your upgrades here."""
    # table sbmFORMATEXTENSION

    # add "id" column
    op.add_column('sbmFORMATEXTENSION',
                  db.Column('id', db.Integer(), nullable=False))
    # set all ids
    records = run_sql("""SELECT FILE_FORMAT, FILE_EXTENSION FROM """
                      """sbmFORMATEXTENSION AS sbm """
                      """ORDER BY sbm.FILE_FORMAT, sbm.FILE_EXTENSION""")
    for index, rec in enumerate(records):
        run_sql("""UPDATE sbmFORMATEXTENSION """
                """SET id = %s """
                """ WHERE FILE_FORMAT = %s AND """
                """       FILE_EXTENSION = %s """,
                (index + 1, rec[0], rec[1]))
    # remove primary key
    try:
        op.drop_constraint(None, 'sbmFORMATEXTENSION',
                           type_='primary')
    except OperationalError:
        # the primary key is already dropped
        warnings.warn("""Primary key of sbmFORMATEXTENSION """
                      """table has been already dropped.""")
    # set id as new primary key
    op.create_primary_key('pk_sbmFORMATEXTENSION_id',
                          'sbmFORMATEXTENSION', ['id'])
    # set id as autoincrement
    op.alter_column('sbmFORMATEXTENSION', 'id',
                    existing_type=db.Integer(),
                    existing_nullable=False, autoincrement=True)
    # create indices
    op.create_index('sbmformatextension_file_extension_idx',
                    'sbmFORMATEXTENSION', columns=['FILE_EXTENSION'],
                    unique=False, mysql_length=10)
    op.create_index('sbmformatextension_file_format_idx',
                    'sbmFORMATEXTENSION', columns=['FILE_FORMAT'],
                    unique=False, mysql_length=50)

    # table sbmGFILERESULT

    # add "id" column
    op.add_column('sbmGFILERESULT',
                  db.Column('id', db.Integer(), nullable=False))
    # set all ids
    records = run_sql("""SELECT FORMAT, RESULT FROM """
                      """sbmGFILERESULT AS sbm """
                      """ORDER BY sbm.FORMAT, sbm.RESULT""")
    for index, rec in enumerate(records):
        run_sql("""UPDATE sbmGFILERESULT """
                """SET id = %s """
                """ WHERE FORMAT = %s AND """
                """       RESULT = %s """,
                (index + 1, rec[0], rec[1]))
    # remove primary key
    try:
        op.drop_constraint(None, 'sbmGFILERESULT',
                           type_='primary')
    except OperationalError:
        # the primary key is already dropped
        warnings.warn("""Primary key of sbmGFILERESULT """
                      """table has been already dropped.""")
    # set id as new primary key
    op.create_primary_key('pk_sbmGFILERESULT_id',
                          'sbmGFILERESULT', ['id'])
    # set id as autoincrement
    op.alter_column('sbmGFILERESULT', 'id',
                    existing_type=db.Integer(),
                    existing_nullable=False, autoincrement=True)
    # create indices
    op.create_index('sbmgfileresult_format_idx',
                    'sbmGFILERESULT', columns=['FORMAT'],
                    unique=False, mysql_length=50)
    op.create_index('sbmgfileresult_result_idx',
                    'sbmGFILERESULT', columns=['RESULT'],
                    unique=False, mysql_length=50)
def do_upgrade():
    """Implement your upgrades here."""
    # Table sbmCOLLECTION_sbmCOLLECTION

    # add column "id" in the table
    op.add_column('sbmCOLLECTION_sbmCOLLECTION',
                  db.Column('id', db.Integer(11), nullable=False))

    # set all new ids
    records = run_sql("""SELECT id_father, id_son FROM """
                      """sbmCOLLECTION_sbmCOLLECTION AS ssc """
                      """ORDER BY ssc.id_father, ssc.id_son""")
    for index, rec in enumerate(records):
        run_sql("""UPDATE sbmCOLLECTION_sbmCOLLECTION
                SET id = %s WHERE id_father = %s AND id_son = %s """,
                (index + 1, rec[0], rec[1]))

    # drop primary keys
    try:
        op.drop_constraint(None, 'sbmCOLLECTION_sbmCOLLECTION',
                           type_='primary')
    except OperationalError:
        # the primary key is already dropped
        warnings.warn("""Primary key of sbmCOLLECTION_sbmCOLLECTION """
                      """table has been already dropped.""")

    # create new primary key with id
    op.create_primary_key('pk_sbmCOLLECTION_sbmCOLLECTION_id',
                          'sbmCOLLECTION_sbmCOLLECTION', ['id'])
    # set id as autoincrement
    op.alter_column('sbmCOLLECTION_sbmCOLLECTION', 'id',
                    existing_type=db.Integer(11),
                    existing_nullable=False, autoincrement=True)
    # fix columns id_father and id_son
    op.alter_column('sbmCOLLECTION_sbmCOLLECTION', 'id_father',
                    existing_type=db.Integer(11),
                    nullable=True, server_default=None)
    op.alter_column('sbmCOLLECTION_sbmCOLLECTION', 'id_son',
                    existing_type=db.Integer(11),
                    nullable=False, server_default=None)
    op.create_index('id_father', 'sbmCOLLECTION_sbmCOLLECTION',
                    columns=['id_father'])

    # Table sbmCOLLECTION_sbmDOCTYPE

    # add column "id" in the table
    op.add_column('sbmCOLLECTION_sbmDOCTYPE',
                  db.Column('id', db.Integer(11), nullable=False))

    # set all new ids
    records = run_sql("""SELECT id_father, id_son
                      FROM sbmCOLLECTION_sbmDOCTYPE AS ssd
                      ORDER BY ssd.id_father, ssd.id_son""")
    for index, rec in enumerate(records):
        run_sql("""UPDATE sbmCOLLECTION_sbmDOCTYPE
                SET id = %s WHERE id_father = %s AND id_son = %s """,
                (index + 1, rec[0], rec[1]))

    # drop primary keys
    try:
        op.drop_constraint('id_father', 'sbmCOLLECTION_sbmDOCTYPE',
                           type_='primary')
    except OperationalError:
        # the primary key is already dropped
        warnings.warn("""Primary key of sbmCOLLECTION_sbmDOCTYPE """
                      """table has been already dropped.""")

    # create new primary key with id
    op.create_primary_key('pk_sbmCOLLECTION_sbmDOCTYPE_id',
                          'sbmCOLLECTION_sbmDOCTYPE', ['id'])
    # set id as autoincrement
    op.alter_column('sbmCOLLECTION_sbmDOCTYPE', 'id',
                    existing_type=db.Integer(11),
                    existing_nullable=False, autoincrement=True)
    # fix columns id_father and id_son
    op.alter_column('sbmCOLLECTION_sbmDOCTYPE', 'id_father',
                    existing_type=db.Integer(11),
                    nullable=True, server_default=None)
    op.alter_column('sbmCOLLECTION_sbmDOCTYPE', 'id_son',
                    existing_type=db.Char(10),
                    nullable=False, server_default=None)
    op.create_index('id_father', 'sbmCOLLECTION_sbmDOCTYPE',
                    columns=['id_father'])
def do_upgrade():
    """Implement your upgrades here."""
    # Table sbmCOLLECTION_sbmCOLLECTION

    # add column "id" in the table
    op.add_column('sbmCOLLECTION_sbmCOLLECTION',
                  db.Column('id', db.Integer(11), nullable=False))

    # set all new ids
    records = run_sql("""SELECT id_father, id_son FROM """
                      """sbmCOLLECTION_sbmCOLLECTION AS ssc """
                      """ORDER BY ssc.id_father, ssc.id_son""")
    for index, rec in enumerate(records):
        run_sql(
            """UPDATE sbmCOLLECTION_sbmCOLLECTION
                SET id = %s WHERE id_father = %s AND id_son = %s """,
            (index + 1, rec[0], rec[1]))

    # drop primary keys
    try:
        op.drop_constraint(None,
                           'sbmCOLLECTION_sbmCOLLECTION',
                           type_='primary')
    except OperationalError:
        # the primary key is already dropped
        warnings.warn("""Primary key of sbmCOLLECTION_sbmCOLLECTION """
                      """table has been already dropped.""")

    # create new primary key with id
    op.create_primary_key('pk_sbmCOLLECTION_sbmCOLLECTION_id',
                          'sbmCOLLECTION_sbmCOLLECTION', ['id'])
    # set id as autoincrement
    op.alter_column('sbmCOLLECTION_sbmCOLLECTION',
                    'id',
                    existing_type=db.Integer(11),
                    existing_nullable=False,
                    autoincrement=True)
    # fix columns id_father and id_son
    op.alter_column('sbmCOLLECTION_sbmCOLLECTION',
                    'id_father',
                    existing_type=db.Integer(11),
                    nullable=True,
                    server_default=None)
    op.alter_column('sbmCOLLECTION_sbmCOLLECTION',
                    'id_son',
                    existing_type=db.Integer(11),
                    nullable=False,
                    server_default=None)
    op.create_index('id_father',
                    'sbmCOLLECTION_sbmCOLLECTION',
                    columns=['id_father'])

    # Table sbmCOLLECTION_sbmDOCTYPE

    # add column "id" in the table
    op.add_column('sbmCOLLECTION_sbmDOCTYPE',
                  db.Column('id', db.Integer(11), nullable=False))

    # set all new ids
    records = run_sql("""SELECT id_father, id_son
                      FROM sbmCOLLECTION_sbmDOCTYPE AS ssd
                      ORDER BY ssd.id_father, ssd.id_son""")
    for index, rec in enumerate(records):
        run_sql(
            """UPDATE sbmCOLLECTION_sbmDOCTYPE
                SET id = %s WHERE id_father = %s AND id_son = %s """,
            (index + 1, rec[0], rec[1]))

    # drop primary keys
    try:
        op.drop_constraint('id_father',
                           'sbmCOLLECTION_sbmDOCTYPE',
                           type_='primary')
    except OperationalError:
        # the primary key is already dropped
        warnings.warn("""Primary key of sbmCOLLECTION_sbmDOCTYPE """
                      """table has been already dropped.""")

    # create new primary key with id
    op.create_primary_key('pk_sbmCOLLECTION_sbmDOCTYPE_id',
                          'sbmCOLLECTION_sbmDOCTYPE', ['id'])
    # set id as autoincrement
    op.alter_column('sbmCOLLECTION_sbmDOCTYPE',
                    'id',
                    existing_type=db.Integer(11),
                    existing_nullable=False,
                    autoincrement=True)
    # fix columns id_father and id_son
    op.alter_column('sbmCOLLECTION_sbmDOCTYPE',
                    'id_father',
                    existing_type=db.Integer(11),
                    nullable=True,
                    server_default=None)
    op.alter_column('sbmCOLLECTION_sbmDOCTYPE',
                    'id_son',
                    existing_type=db.Char(10),
                    nullable=False,
                    server_default=None)
    op.create_index('id_father',
                    'sbmCOLLECTION_sbmDOCTYPE',
                    columns=['id_father'])