from patch.include import *
from tqdm import tqdm
import datetime

@app_context(commit=True)
def deleted_custom_field_bool_meta_fix():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202409250913_deleted_custom_field_bool_meta_fix )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    print('Запуск патча deleted_custom_field_bool_meta_fix')

    need_gen_meta = True
    for cust_field in tqdm(models.CmfCustField.list(filter=['field_type', '==', 'CmfBool'], cmf_deleted=True)):
        field_name = cust_field.name.value
        # поля может и не быть, нечего исправлять тогда
        if not hasattr(models.CmfTask, field_name):
            continue
        cust_field.dirty = True
        cust_field.save(only_data=True)
        commit_all_ds()
        need_gen_meta = True

    if need_gen_meta:
        models.CmfTask.custom_fields_gen_meta(
            {
                'meta_version': datetime.datetime.now().strftime("%Y%m%d%H%M%S"),
                'model_name': 'CmfTask',
                'force': False,
                'include_deleted': True,
            }
        )

if __name__ == "__main__":
    deleted_custom_field_bool_meta_fix()
