from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def fix_epic():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202504221440_fix_epic )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    print('Запуск патча fix_epic')
    _filter=[['parent_task.epic', '!=', None], ['epic', '==', None]]
    cnt = models.CmfTask.count(filter=_filter)
    step = 100
    for i in tqdm(range(0, cnt, step)):
        for task in models.CmfTask.list(filter=_filter, 
                                        fields=['parent_task', 'epic', 'subproject', 'logic_prefix', 'gantt_project'], 
                                        slice=[i, i+step]):
            task._recalc_gantt_path(task.parent_task)
            task.save(only_data=True)


if __name__ == "__main__":
    fix_epic()
