# -*- coding: utf-8 -*-
###########################################################################
# Copyright (c), The AiiDA team. All rights reserved. #
# This file is part of the AiiDA code. #
# #
# The code is hosted on GitHub at https://github.com/aiidateam/aiida-core #
# For further information on the license, see the LICENSE.txt file #
# For further information please visit http://www.aiida.net #
###########################################################################
# pylint: disable=invalid-name
"""Migration to reflect the name change of the built in calculation entry points in the database.
Revision ID: 140c971ae0a3
Revises: 162b99bca4a2
Create Date: 2018-12-06 12:42:01.897037
"""
from alembic import op
# Remove when https://github.com/PyCQA/pylint/issues/1931 is fixed
# pylint: disable=no-name-in-module,import-error
from sqlalchemy.sql import text
# revision identifiers, used by Alembic.
revision = '140c971ae0a3'
down_revision = '162b99bca4a2'
branch_labels = None
depends_on = None
[docs]def upgrade():
"""Migrations for the upgrade."""
conn = op.get_bind() # pylint: disable=no-member
# The built in calculation plugins `arithmetic.add` and `templatereplacer` have been moved and their entry point
# renamed. In the change the `simpleplugins` namespace was dropped so we migrate the existing nodes.
statement = text(
"""
UPDATE db_dbnode SET type = 'calculation.job.arithmetic.add.ArithmeticAddCalculation.'
WHERE type = 'calculation.job.simpleplugins.arithmetic.add.ArithmeticAddCalculation.';
UPDATE db_dbnode SET type = 'calculation.job.templatereplacer.TemplatereplacerCalculation.'
WHERE type = 'calculation.job.simpleplugins.templatereplacer.TemplatereplacerCalculation.';
UPDATE db_dbnode SET process_type = 'aiida.calculations:arithmetic.add'
WHERE process_type = 'aiida.calculations:simpleplugins.arithmetic.add';
UPDATE db_dbnode SET process_type = 'aiida.calculations:templatereplacer'
WHERE process_type = 'aiida.calculations:simpleplugins.templatereplacer';
UPDATE db_dbnode SET attributes = jsonb_set(attributes, '{"input_plugin"}', '"arithmetic.add"')
WHERE attributes @> '{"input_plugin": "simpleplugins.arithmetic.add"}'
AND type = 'data.code.Code.';
UPDATE db_dbnode SET attributes = jsonb_set(attributes, '{"input_plugin"}', '"templatereplacer"')
WHERE attributes @> '{"input_plugin": "simpleplugins.templatereplacer"}'
AND type = 'data.code.Code.';
"""
)
conn.execute(statement)
[docs]def downgrade():
"""Migrations for the downgrade."""
conn = op.get_bind() # pylint: disable=no-member
statement = text(
"""
UPDATE db_dbnode SET type = 'calculation.job.simpleplugins.arithmetic.add.ArithmeticAddCalculation.'
WHERE type = 'calculation.job.arithmetic.add.ArithmeticAddCalculation.';
UPDATE db_dbnode SET type = 'calculation.job.simpleplugins.templatereplacer.TemplatereplacerCalculation.'
WHERE type = 'calculation.job.templatereplacer.TemplatereplacerCalculation.';
UPDATE db_dbnode SET process_type = 'aiida.calculations:simpleplugins.arithmetic.add'
WHERE process_type = 'aiida.calculations:arithmetic.add';
UPDATE db_dbnode SET process_type = 'aiida.calculations:simpleplugins.templatereplacer'
WHERE process_type = 'aiida.calculations:templatereplacer';
UPDATE db_dbnode SET attributes = jsonb_set(attributes, '{"input_plugin"}', '"simpleplugins.arithmetic.add"')
WHERE attributes @> '{"input_plugin": "arithmetic.add"}'
AND type = 'data.code.Code.';
UPDATE db_dbnode SET attributes = jsonb_set(attributes, '{"input_plugin"}', '"simpleplugins.templatereplacer"')
WHERE attributes @> '{"input_plugin": "templatereplacer"}'
AND type = 'data.code.Code.';
"""
)
conn.execute(statement)