from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def patch():
    """
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    triggers = models.CmfTrigger.list(
        filter=["AND",
            ["func_name", "==", "set_field"]
        ],
        fields=["*"]
    )

    bad_triggers = []
    count_update = 0  
    for trigger in triggers:
        if len(trigger.json_data.value) > 0:
            bad_triggers.append(trigger)
    print("All bad triggers")
    print(len(bad_triggers))

    for trigger in bad_triggers:
        if trigger.json_action['caption'] == "Сменить ответственного" or trigger.json_action['caption'] == "Сменить ответственного по сделке":
            trigger.func_name.value = 'distribution_person';
            trigger.json_action.value = { 'caption': 'Сменить ответственного по сделке', 'value': 'save' };
            trigger.json_data.value = []
            trigger.json_data.value.append({
                'caption': 'Сменить на',
                'modelName': 'CmfDeal',
                'type': 'model_m2m_choice',
                'value': [],
                'fieldName': 'responsible'
            });
            count_update = count_update + 1
            trigger.save(only_data=True)
    print("Update bad triggers")
    print(count_update)


if __name__ == "__main__":
    patch()
