from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def archive_folder():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202410241101_archive_folder )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    print('Запуск патча archive_folder')
    from common.models.cmf_tree_node import CmfTreeNode
    node_models = [model for model in cmfutil.iter_models() if issubclass(model, CmfTreeNode)]
    for project in tqdm(models.CmfProject.list(filter=['has_children_archived', '==', False])):
        for model in node_models:
            if model.count(filter=[['project', '==', project], ['cmf_archived', '==', True]], include_archived=True):
                # Отмечаем что в проекте есть архивные обьекты
                project.has_children_archived = True
                project.save(only_data=True)
                cmf_commit()
                break


if __name__ == "__main__":
    archive_folder()
