Files
shopdb-flask/plugins/warranty/migrations/versions/0002_proof_document.py

51 lines
1.4 KiB
Python

"""Add warranties.proofurl / prooffilename (proof-of-cover document).
A provider lookup answers whether a unit is covered. It does not produce the
invoice or the extended-warranty certificate, and a manually entered warranty
had nowhere to keep one - so the proof lived in somebody's mailbox until they
left. Two columns: the served URL of the stored file, and the name the vendor
sent it under, which is what a person recognises months later.
Idempotent; downgrade drops both.
Revision ID: warranty0002proof
Revises: warranty0001anchor
"""
from alembic import op
import sqlalchemy as sa
revision = 'warranty0002proof'
down_revision = 'warranty0001anchor'
branch_labels = None
depends_on = None
_TABLE = 'warranties'
_COLUMNS = (('proofurl', sa.String(500)), ('prooffilename', sa.String(255)))
def _column_names(insp, table):
return {c['name'] for c in insp.get_columns(table)}
def upgrade():
bind = op.get_bind()
insp = sa.inspect(bind)
if _TABLE not in insp.get_table_names():
return
existing = _column_names(insp, _TABLE)
for name, coltype in _COLUMNS:
if name not in existing:
op.add_column(_TABLE, sa.Column(name, coltype, nullable=True))
def downgrade():
bind = op.get_bind()
insp = sa.inspect(bind)
if _TABLE not in insp.get_table_names():
return
existing = _column_names(insp, _TABLE)
for name, _ in _COLUMNS:
if name in existing:
op.drop_column(_TABLE, name)