from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def fix_project():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202511281437_fix_project )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    print('Запуск патча fix_project')
    total_items = 0
    total_updated = 0
    servicedesk_projects = models.CmfProject.slist(filter=['logic_prefix', '==', 'project.servicedesk'])
    for project in servicedesk_projects:
        total_items += models.CmfTask.count(filter=['project', '==', project.id])
    pbar = tqdm(total=total_items, desc="Обработка")
    for project in servicedesk_projects:
        tasks = models.CmfTask.slist(filter=['project', '==', project.id])
        for task in tasks:
            pbar.update(1)
            total_updated += len(models.CmfComment.bulk_update(filter=[['project', '!=', project.id],['parent', '==', task.id]], values={'project_id': project.id}))
        cmf_commit()
    pbar.close()
    print(f'Обновлено {total_updated} комментариев')


if __name__ == "__main__":
    fix_project()
