"""add approved field

Revision ID: d4fc72300c43
Revises: dba4b9aa09ba
Create Date: 2021-04-19 15:06:44.951109

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'd4fc72300c43'
down_revision = 'dba4b9aa09ba'
branch_labels = None
depends_on = None


def add_approved(table_name):
    op.add_column(f'{table_name}', sa.Column('approved', sa.Boolean(), nullable=True))
    op.execute(f'update {table_name} set approved = true')
    op.alter_column(f'{table_name}', 'approved', nullable=False)
    op.create_index(op.f(f'ix_{table_name}_approved'), f'{table_name}', ['approved'], unique=False)


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    add_approved('cmf_chat_group')
    add_approved('cmf_chat_topic')
    add_approved('cmf_company')
    add_approved('cmf_deal')
    add_approved('cmf_document')
    add_approved('cmf_invoice')
    add_approved('cmf_lead')
    add_approved('cmf_list')
    add_approved('cmf_mail')
    add_approved('cmf_payment')
    add_approved('cmf_pipeline')
    add_approved('cmf_project')
    add_approved('cmf_purchase_order')
    add_approved('cmf_purchase_order_items')
    add_approved('cmf_sales_order')
    add_approved('cmf_stock_move')
    add_approved('cmf_stock_move_items')
    add_approved('cmf_task')
    add_approved('cmf_u_work_post')

    op.execute("update cmf_task set approved = false where cmf_task.id in (select cmf_task.id from cmf_task inner join cmf_list_cmf_task on cmf_list_cmf_task.right_id = cmf_task.id where cmf_list_cmf_task.left_name_cache = 'Входящие')")
    op.execute("update cmf_list set sys_type = null where sys_type='inbox'")

    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_index(op.f('ix_cmf_u_work_post_approved'), table_name='cmf_u_work_post')
    op.drop_column('cmf_u_work_post', 'approved')
    op.drop_index(op.f('ix_cmf_task_approved'), table_name='cmf_task')
    op.drop_column('cmf_task', 'approved')
    op.drop_index(op.f('ix_cmf_stock_move_items_approved'), table_name='cmf_stock_move_items')
    op.drop_column('cmf_stock_move_items', 'approved')
    op.drop_index(op.f('ix_cmf_stock_move_approved'), table_name='cmf_stock_move')
    op.drop_column('cmf_stock_move', 'approved')
    op.drop_index(op.f('ix_cmf_sales_order_approved'), table_name='cmf_sales_order')
    op.drop_column('cmf_sales_order', 'approved')
    op.drop_index(op.f('ix_cmf_purchase_order_items_approved'), table_name='cmf_purchase_order_items')
    op.drop_column('cmf_purchase_order_items', 'approved')
    op.drop_index(op.f('ix_cmf_purchase_order_approved'), table_name='cmf_purchase_order')
    op.drop_column('cmf_purchase_order', 'approved')
    op.drop_index(op.f('ix_cmf_project_approved'), table_name='cmf_project')
    op.drop_column('cmf_project', 'approved')
    op.drop_index(op.f('ix_cmf_pipeline_approved'), table_name='cmf_pipeline')
    op.drop_column('cmf_pipeline', 'approved')
    op.drop_index(op.f('ix_cmf_payment_approved'), table_name='cmf_payment')
    op.drop_column('cmf_payment', 'approved')
    op.drop_index(op.f('ix_cmf_mail_approved'), table_name='cmf_mail')
    op.drop_column('cmf_mail', 'approved')
    op.drop_index(op.f('ix_cmf_list_approved'), table_name='cmf_list')
    op.drop_column('cmf_list', 'approved')
    op.drop_index(op.f('ix_cmf_lead_approved'), table_name='cmf_lead')
    op.drop_column('cmf_lead', 'approved')
    op.drop_index(op.f('ix_cmf_invoice_approved'), table_name='cmf_invoice')
    op.drop_column('cmf_invoice', 'approved')
    op.drop_index(op.f('ix_cmf_document_approved'), table_name='cmf_document')
    op.drop_column('cmf_document', 'approved')
    op.drop_index(op.f('ix_cmf_deal_approved'), table_name='cmf_deal')
    op.drop_column('cmf_deal', 'approved')
    op.drop_index(op.f('ix_cmf_company_approved'), table_name='cmf_company')
    op.drop_column('cmf_company', 'approved')
    op.drop_index(op.f('ix_cmf_chat_topic_approved'), table_name='cmf_chat_topic')
    op.drop_column('cmf_chat_topic', 'approved')
    op.drop_index(op.f('ix_cmf_chat_group_approved'), table_name='cmf_chat_group')
    op.drop_column('cmf_chat_group', 'approved')
    # ### end Alembic commands ###
