from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def archive_folder():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202410161123_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 f in tqdm(models.CmfFolder.list(filter=[['sys_type', '==', 'archive'], ['has_tree_nodes', '==', False]])):
        for model in node_models:
            if model.count(filter=[['tree_parent_id', '==', f.tree_parent_id], ['cmf_archived', '==', True]]):
                f.has_tree_nodes = True
                f.save(only_data=True)
                cmf_commit()
                break
    


if __name__ == "__main__":
    archive_folder()
