from patch.include import *
from tqdm import tqdm


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

    with cmfutil.disable_acl(), cmfutil.disable_notify():
        projects = models.CmfProject.list(
            filter=[
                ['main_gantt_project', '=', None],
                ['cloned_from', '!=', None]
            ],
            fields=['main_gantt_project']
        )
        for project in tqdm(projects):
            gantt_project = models.CmfTask()
            gantt_project.logic_type = models.CmfLogicType.get(code='task.gantt_project:default')
            gantt_project.parent = project
            gantt_project.name = f"Гант {project.name}"
            gantt_project.system = True
            gantt_project.save(emit=False, notify=False)

            project.main_gantt_project = gantt_project
            project.save(emit=False, notify=False)


if __name__ == "__main__":
    create_gantt_for_cloned_projects()
