from patch.include import *
from tqdm import tqdm
from collections import defaultdict


@app_context(commit=True)
def update_roadmap_sources():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202406260914_update_roadmap_sources )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    print('Запуск патча update_roadmap_sources')
    roadmap_sources = defaultdict(list)
    for tf in models.CmfTaskFilter.list(filter=['parent_id', 'ILIKE', 'CmfRoadmap%']):
        roadmap_sources[tf.parent.value].append(tf)

    for roadmap, sources in roadmap_sources.items():
        roadmap.ft_sources = sources
        roadmap.save(only_data=True, notify=False, emit=False)

if __name__ == "__main__":
    update_roadmap_sources()
