from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def components():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202311141250_components )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    from cmf.system_data import scaffold_project_role
    print('Запуск патча components')
    for project in tqdm(models.CmfProject.list(filter=['logic_prefix', 'IN', ['project.base', 'project.servicedesk']])):
        components_folder = models.CmfFolder.get(tree_parent=project, system=True, sys_type='components')
        if not components_folder:
            components_folder = models.CmfFolder(
                tree_parent=project,
                name='Компоненты',
                sys_type='components',
                system=True,
                tree_hidden=False,
            )
            components_folder.save()
            project.show_components = False
            project.save(only_data=True)
    with cmfutil.disable_acl(), cmfutil.disable_notify():
        scaffold_project_role()
    


if __name__ == "__main__":
    components()
