from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def patch():
    """
    Для тестирования патча: ( cd /opt/crm; python3 -m patch.20220XXXXXXX_PATCHNAME )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    # Выставляем правильно новое поле main_list
    # из lists брать:
    # - эпик
    # - либо любой первый simple
    # - если пусто, либо только спринты — оставить пусто

    # Поставляем спискам sys_type = null значение simple
    for list in tqdm(models.CmfList.list(filter=['sys_type', '=', None], fields=['sys_type'])):
        list.sys_type = 'simple'
        list.save(only_data=True)

    for task in tqdm(models.CmfTask.list(filter=['main_list', '=', None], fields=['lists', 'lists.sys_type'])):
        main_list = None
        for l in task.lists:
            if l.sys_type == 'epic':
                main_list = l
                break
            if l.sys_type == 'simple' and not main_list:
                main_list = l

        # Выставляем выбранный список
        if main_list:
            task.main_list = main_list
            task.save(only_data=True)


if __name__ == "__main__":
    patch()
