from patch.include import *


@app_context(commit=True)
def delete_stats_with_invalid_project_id():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202402071159_delete_stats_with_invalid_project_id )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    print('Запуск патча delete_stats_with_invalid_project_id')

    filter = [
        [
            "OR", 
            ["project_id", "==", None], 
            ["project_id", "NOT LIKE", "CmfProject:%"]
        ]
    ]

    while True:
        stats = models.CmfStatAggregDay.list(filter=filter, slice=[0, 100])

        if not stats:
            break

        for stat in stats:
            stat.delete()

        models.CmfStatAggregDay.dp.commit()


if __name__ == "__main__":
    delete_stats_with_invalid_project_id()
