from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def refactor_archive():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202409191403_refactor_archive )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    print('Запуск патча refactor_archive')
    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.slist(include_delete=True, fields=['--'])):
        archive_folder = models.CmfFolder.sget(sys_type='archive', tree_parent=project.id, fields=['--'])
        if archive_folder:
            for node_model in node_models:
                node_model.bulk_update(filter=[['cmf_archived', '==', True], ['tree_parent_id', '==', archive_folder.id]],
                                    values={'tree_parent_id': project.id})
                cmf_commit()


if __name__ == "__main__":
    refactor_archive()
