from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def fix_epics_folder():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.fix_epics )

    Патч добавляет эпики в Epics в дереве проекта, восстанавливая структуру
    """
    print("Запуск патча fix_epics")

    projects = models.CmfProject.list(
        filter=["cmf_import_id", "!=", None]
    )
    for project in tqdm(projects):
        epics_folder = models.CmfFolder.get(
            tree_parent=project,
            sys_type="epic",
            include_system=True,
            fields=["tree_node_is_branch"]
        )

        tasks = models.CmfTask.list(
            filter=[
                ["parent", "=", project],
                ["logic_prefix", "=", "task.epic"]
            ],
            fields=["tree_parent"],
        )
        for task in tasks:
            if not task.tree_parent:
                task.tree_parent = epics_folder
                task.save(only_data=True)

            if not epics_folder.tree_node_is_branch:
                epics_folder.tree_node_is_branch = True
                epics_folder.save(only_data=True)

        cmf_commit()


if __name__ == "__main__":
    fix_epics_folder()
