diff options
| author | Barry Warsaw | 2017-01-04 15:10:55 +0000 |
|---|---|---|
| committer | Barry Warsaw | 2017-01-04 15:10:55 +0000 |
| commit | 9ecb0d462b79bec42e82b6aecea8853262e15753 (patch) | |
| tree | dc422ff2eec850387fcdb7a3c326f8d3a267a16a /src/mailman/database/alembic/versions/3002bac0c25a_dmarc_attributes.py | |
| parent | 8cb4546b9a2bf87a3e2d465651686ca26a5404db (diff) | |
| parent | ae3eeb642b452ee844ba7a2999361f31c3c327c7 (diff) | |
| download | mailman-9ecb0d462b79bec42e82b6aecea8853262e15753.tar.gz mailman-9ecb0d462b79bec42e82b6aecea8853262e15753.tar.zst mailman-9ecb0d462b79bec42e82b6aecea8853262e15753.zip | |
Diffstat (limited to 'src/mailman/database/alembic/versions/3002bac0c25a_dmarc_attributes.py')
| -rw-r--r-- | src/mailman/database/alembic/versions/3002bac0c25a_dmarc_attributes.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/mailman/database/alembic/versions/3002bac0c25a_dmarc_attributes.py b/src/mailman/database/alembic/versions/3002bac0c25a_dmarc_attributes.py new file mode 100644 index 000000000..aa2d8610d --- /dev/null +++ b/src/mailman/database/alembic/versions/3002bac0c25a_dmarc_attributes.py @@ -0,0 +1,70 @@ +"""dmarc_attributes + +Revision ID: 3002bac0c25a +Revises: a46993b05703 +Create Date: 2016-10-30 22:05:17.881880 + +""" + +import sqlalchemy as sa + +from alembic import op +from mailman.database.helpers import exists_in_db +from mailman.database.types import Enum, SAUnicodeLarge +from mailman.interfaces.mailinglist import DMARCMitigateAction + + +# revision identifiers, used by Alembic. +revision = '3002bac0c25a' +down_revision = 'a46993b05703' + + +def upgrade(): + if not exists_in_db(op.get_bind(), + 'mailinglist', + 'dmarc_mitigate_action' + ): + # SQLite may not have removed it when downgrading. It should be OK + # to just test one. + op.add_column('mailinglist', sa.Column( + 'dmarc_mitigate_action', + Enum(DMARCMitigateAction), + nullable=True)) + op.add_column('mailinglist', sa.Column( + 'dmarc_mitigate_unconditionally', + sa.Boolean, + nullable=True)) + op.add_column('mailinglist', sa.Column( + 'dmarc_moderation_notice', + SAUnicodeLarge(), + nullable=True)) + op.add_column('mailinglist', sa.Column( + 'dmarc_wrapped_message_text', + SAUnicodeLarge(), + nullable=True)) + # Now migrate the data. Don't import the table definition from the + # models, it may break this migration when the model is updated in the + # future (see the Alembic doc). + mlist = sa.sql.table( + 'mailinglist', + sa.sql.column('dmarc_mitigate_action', Enum(DMARCMitigateAction)), + sa.sql.column('dmarc_mitigate_unconditionally', sa.Boolean), + sa.sql.column('dmarc_moderation_notice', SAUnicodeLarge()), + sa.sql.column('dmarc_wrapped_message_text', SAUnicodeLarge()), + ) + # These are all new attributes so just set defaults. + op.execute(mlist.update().values(dict( + dmarc_mitigate_action=op.inline_literal( + DMARCMitigateAction.no_mitigation), + dmarc_mitigate_unconditionally=op.inline_literal(False), + dmarc_moderation_notice=op.inline_literal(''), + dmarc_wrapped_message_text=op.inline_literal(''), + ))) + + +def downgrade(): + with op.batch_alter_table('mailinglist') as batch_op: + batch_op.drop_column('dmarc_mitigate_action') + batch_op.drop_column('dmarc_mitigate_unconditionally') + batch_op.drop_column('dmarc_moderation_notice') + batch_op.drop_column('dmarc_wrapped_message_text') |
