from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def project_admins():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202406251029_project_admins )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    import math
    print('Запуск патча project_admins')
    cnt = models.CmfProject.count()
    step = 10
    project_admins_group = models.CmfPersonGroup.get(filter=['code', '==', 'ProjectAdmins'])
    project_admins_group_members = project_admins_group.rg_members.all_nested()
    for i in range(math.ceil(cnt/10)):
        for project in tqdm(models.CmfProject.list(slice=[step*i, step*i + step], fields=['cmf_project_admins'])):
            for pr_admin in project.cmf_project_admins:
                if pr_admin not in project_admins_group_members:
                    project_admins_group_members.append(pr_admin)
                    project_admins_group.rg_members.append(pr_admin)
                    project_admins_group.save()
                    project_admins_group.dp.commit()


if __name__ == "__main__":
    project_admins()
