from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def custom_field_m2m_fix():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202312061256_custom_field_m2m_fix )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    print('Запуск патча custom_field_m2m_fix')
    for ui_form in models.CmfUiForm.list(fields=['ui_form_json']):
        ui_form_json = ui_form.ui_form_json.value
        for key in ui_form_json['ui_fields']:
            if ui_form_json['ui_fields'][key].get('field_type') == 'CmfGenericM2M':
                if not ui_form_json['ui_fields'][key].get('left'):
                    print(f"Неправильная настройка поля {ui_form_json['ui_fields'][key]}")
                    ui_form_json['ui_fields'][key]['left'] = True
        ui_form.ui_form_json = ui_form_json
        ui_form.save(only_data=True)
        ui_form.dp.commit()
    models.CmfTask.custom_field_sync(skip_choice_data_sync=True)

if __name__ == "__main__":
    custom_field_m2m_fix()
