"""Add photofilename to directoryemployees (self-hosted employee photos). The core chain (7d16_directoryemployees) created directoryemployees WITHOUT a photofilename column. This plugin revision adds it, so BOTH fresh installs (core chain builds the table, then this adds the column) and existing installs get it. Guarded/idempotent: skips when the table is absent (plugin disabled) or the column already exists (e.g. a test DB built by db.create_all() from the model). Revision ID: employees0002photo Revises: employees0001anchor """ from alembic import op import sqlalchemy as sa revision = 'employees0002photo' down_revision = 'employees0001anchor' branch_labels = None depends_on = None def upgrade(): bind = op.get_bind() insp = sa.inspect(bind) if 'directoryemployees' not in insp.get_table_names(): return cols = {c['name'] for c in insp.get_columns('directoryemployees')} if 'photofilename' not in cols: op.add_column('directoryemployees', sa.Column('photofilename', sa.String(length=255), nullable=True)) def downgrade(): bind = op.get_bind() insp = sa.inspect(bind) if 'directoryemployees' not in insp.get_table_names(): return cols = {c['name'] for c in insp.get_columns('directoryemployees')} if 'photofilename' in cols: op.drop_column('directoryemployees', 'photofilename')