from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def sd_wf_rule_fix():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202311071159_sd_wf_rule_fix )
    Добавляет лоджик тайп для согласования, исправляет запись
    """
    print('Запуск патча sd_wf_rule_fix')

    with cmfutil.disable_acl(), cmfutil.disable_notify():
        # Не проставили :default из-за этого багается
        bad_lt = models.CmfLogicType.get(code='task.doc_need_watch:dokument_trebuet_oznakomlenija')
        if bad_lt:
            bad_lt.code = 'task.doc_need_watch'
            bad_lt.save(only_data=True)
        bad_lt = models.CmfLogicType.get(code='task.doc_need_approve:utverdit__dokument')
        if bad_lt:
            bad_lt.code = 'task.doc_need_approve'
            bad_lt.save(only_data=True)

        from cmf.system_data import scaffold_logic_type
        scaffold_logic_type()
        commit_all_ds()

        lt = models.CmfLogicType.get(code='task.sd_service_request_approve:default')

        wfr = models.CmfSchemeWfRule.get(filter=[
            ['scheme_wf.code', '=', 'servicedesk:default'],
            ['logic_type.code', '=', 'task.sd_service_request:default'],
            ['target_workflow.code', '=', 'task.sd_service_request_with_approvals:default']
        ])
        if wfr:
            wfr.logic_type = lt
            wfr.save(only_data=True)

if __name__ == "__main__":
    sd_wf_rule_fix()
