from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def fix_sdesk_wf():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202404031141_fix_sdesk_wf )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """    
    from cmf.system_data import scaffold_status_codes, scaffold_workflow, scaffold_scheme_wf

    print('Запуск патча fix_sdesk_wf')
    wfs = models.CmfWorkflow.list(filter=[
        ['code', 'LIKE', 'task.sdesk\_%'],
        ['system', '=', True]
    ])
    for wf in wfs:
        if not wf.name.startswith("(Устаревший)"):
            wf.name = f"(Устаревший) {wf.name}"
            old_code =wf.code.split(':')
            wf.code = old_code[0] + '-old202404:' + old_code[1]
            if not models.CmfWorkflow.get(code=wf.code):
                wf.save(only_data=True)

    scheme_wf = models.CmfSchemeWf.get(code='servicedesk:default')
    if not scheme_wf.name.startswith("Устаревшая"):
        scheme_wf.name = f"(Устаревшая) {scheme_wf.name}"
        scheme_wf.code = 'servicedesk-old202404:default'
        if not models.CmfSchemeWf.get(code=scheme_wf.code):
            scheme_wf.save(only_data=True)
    
    scaffold_status_codes()
    scaffold_workflow()
    scaffold_scheme_wf()


if __name__ == "__main__":
    fix_sdesk_wf()
