66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
"""add hash hid to device
|
|
|
|
Revision ID: 93daff872771
|
|
Revises: 564952310b17
|
|
Create Date: 2022-12-13 10:14:45.500087
|
|
|
|
"""
|
|
import hashlib
|
|
|
|
import citext
|
|
import sqlalchemy as sa
|
|
from alembic import context, op
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = '93daff872771'
|
|
down_revision = '564952310b17'
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def get_inv():
|
|
INV = context.get_x_argument(as_dictionary=True).get('inventory')
|
|
if not INV:
|
|
raise ValueError("Inventory value is not specified")
|
|
return INV
|
|
|
|
|
|
def upgrade_data():
|
|
con = op.get_bind()
|
|
sql = f"update {get_inv()}.computer set user_trusts='t';"
|
|
con.execute(sql)
|
|
|
|
dev_sql = f"select id, hid from {get_inv()}.device;"
|
|
for d in con.execute(dev_sql):
|
|
if not d.hid:
|
|
continue
|
|
dev_id = d.id
|
|
chid = hashlib.sha3_256(d.hid.encode('utf-8')).hexdigest()
|
|
sql = f"update {get_inv()}.device set chid='{chid}' where id={dev_id};"
|
|
con.execute(sql)
|
|
|
|
con.execute(sql)
|
|
|
|
|
|
def upgrade():
|
|
op.add_column(
|
|
'computer',
|
|
sa.Column('user_trusts', sa.Boolean(), default=True, nullable=True),
|
|
schema=f'{get_inv()}',
|
|
)
|
|
|
|
op.add_column(
|
|
'device',
|
|
sa.Column('chid', citext.CIText(), nullable=True),
|
|
schema=f'{get_inv()}',
|
|
)
|
|
|
|
upgrade_data()
|
|
|
|
op.alter_column('computer', 'user_trusts', nullable=False, schema=f'{get_inv()}')
|
|
|
|
|
|
def downgrade():
|
|
op.drop_column('computer', 'user_trusts', schema=f'{get_inv()}')
|
|
op.drop_column('device', 'chid', schema=f'{get_inv()}')
|