from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def hidden_custom_choice():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202308041637_hidden_custom_choice )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    # Патч исходников
    return
    print('Запуск патча hidden_custom_choice2')
    models.CmfTask.custom_field_sync(skip_choice_data_sync=True)
    for model_name in vars(models):
        # кастомным таблицам надо поля cmf_hidden добавить
        if model_name.startswith('CmfTaskCf') and model_name.endswith('Ch'):
            model = vars(models)[model_name]
            try:
                print(f'Проверяем {model_name}')
                try:
                    columns = [c['name'] for c in models.CmfTask.dp.data_driver.inspect_table_columns(model.tablename)]
                except Exception as e:
                    print(f'Отдельный баг, что тыблицы может не быть: {e}')
                    continue
                if 'cmf_hidden' not in columns:
                    print(f'Добавляем поле в {model_name}')
                    model.dp.data_driver.add_custom_column(model.tablename, 'cmf_hidden', fields.CmfBool)
                    commit_all_ds()
            except Exception as e:
                print(e)
                rollback_all_ds()
                raise e

if __name__ == "__main__":
    hidden_custom_choice()
