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()):
        ...
    """
    # Проставляем документам text_draft = text, если черновик пустой
    # Считаем, что у клиента патч применится вместе с появлением этого поля, либо вероятность что клиент очищал документы - крайне мала
    limit = 100
    start = 0
    while True:
        # Идем по всем документам без фильтра, чтобы отработала пакетная обработка
        obj_list = models.CmfDocument.list(
            fields=['text', 'text_draft'],
            slice=[start, start + limit]
        )
        start += limit

        if not obj_list:
            break

        for obj in tqdm(obj_list):
            if not obj.text_draft and obj.text:
                obj.text_draft = obj.text
                obj.save(only_data=True)

if __name__ == "__main__":
    patch()
