from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def calc_goal_bql():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202403041314_calc_goal_bql )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    print('Запуск патча calc_goal_bql')
    with cmfutil.disable_acl(), cmfutil.disable_notify():
        for goal in tqdm(models.CmfSDeskSlaGoal.list(fields=['ubql', 'bql'], filter=[
            'OR', [
                ['OR', ['ubql', '!=', None],['ubql', '!=', '']], ['bql', '=', None]], 
                [['ubql', '=', ''], ['bql', '!=', None]]
        ])):
            if goal.ubql and goal.ubql != '' and not goal.bql:
                bql = models.CmfTask.ubql2bql(goal.ubql.value)
                goal.bql = bql
            elif goal.ubql == '' and goal.bql:
                goal.bql = None
            else:
                continue
            
            goal.save(only_data=True)

if __name__ == "__main__":
    calc_goal_bql()
