from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def fix_emailed_request():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202311081335_fix_emailed_request )
    Добавляем экраны просмотра задачи для sd_emailed_request где нет экранов
    Выставляем категорию service-requests где unassigned
    """
    print('Запуск патча fix_emailed_request')

    with cmfutil.disable_acl(), cmfutil.disable_notify():
        request_types = models.CmfSDeskRequestType.list(filter=[
            ['parent.logic_prefix', '=', 'project.servicedesk'],
            ['logic_type', '=', models.CmfLogicType.get(code='task.sd_emailed_request:default')]
        ], fields=['ui_form_view', 'request_category', 'parent'])

        for rt in request_types:
            need_save=False
            if not rt.ui_form_view:
                need_save=True
                # Получаем одну любую ui_form_view из типов обращений где есть экран просмотра
                rt_with_form = models.CmfSDeskRequestType.get(filter=[
                    ['parent', '=', rt.parent], 
                    ['ui_form_view', '!=', None]
                ], fields=['ui_form_view'])
                
                rt.ui_form_view = rt_with_form.ui_form_view
            
            if rt.request_category == 'unassigned':
                need_save=True
                rt.request_category = 'service-requests'
            
            if need_save:
                rt.save(only_data=True)

if __name__ == "__main__":
    fix_emailed_request()
