123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import json
- from django.db.models import Q
- from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
- from apps.workflow.models import WorkflowScript
- from service.base_service import BaseService
- from service.common.log_service import auto_log
- class WorkflowRunScriptService(BaseService):
- """
- 工作流执行脚本服务
- """
- def __init__(self):
- pass
- @classmethod
- @auto_log
- def get_run_script_list(cls, query_value: str, page: int, per_page: int)->tuple:
- """
- 获取执行脚本列表
- get run script list
- :param query_value:
- :param page:
- :param per_page:
- :return:
- """
- query_params = Q(is_deleted=False)
- if query_value:
- query_params &= Q(name__contains=query_value) | Q(description__contains=query_value)
- run_script_querset = WorkflowScript.objects.filter(query_params).order_by('id')
- paginator = Paginator(run_script_querset, per_page)
- try:
- run_script_result_paginator = paginator.page(page)
- except PageNotAnInteger:
- run_script_result_paginator = paginator.page(1)
- except EmptyPage:
- # If page is out of range (e.g. 9999), deliver last page of results
- run_script_result_paginator = paginator.page(paginator.num_pages)
- run_script_result_object_list = run_script_result_paginator.object_list
- run_script_result_restful_list = []
- for run_script_result_object in run_script_result_object_list:
- run_script_result_restful_list.append(dict(
- id=run_script_result_object.id, name=run_script_result_object.name,
- description=run_script_result_object.description, saved_name=run_script_result_object.saved_name.name,
- is_active=run_script_result_object.is_active, creator=run_script_result_object.creator,
- gmt_created=str(run_script_result_object.gmt_created)[:19]))
- return True, dict(run_script_result_restful_list=run_script_result_restful_list,
- paginator_info=dict(per_page=per_page, page=page, total=paginator.count))
- @classmethod
- @auto_log
- def add_run_script(cls, name: str, saved_name: str, description: str, is_active: int, creator: str)->tuple:
- """
- 新增工作流脚本
- add run script
- :param name:
- :param saved_name:
- :param description:
- :param is_active:
- :param creator:
- :return:
- """
- script_obj = WorkflowScript(name=name, saved_name=saved_name, description=description, is_active=is_active,
- creator=creator)
- script_obj.save()
- return True, dict(script_id=script_obj.id)
- @classmethod
- @auto_log
- def edit_run_script(cls, run_script_id: int, name: str, saved_name: str, description: str, is_active: int)->tuple:
- """
- 更新工作流脚本
- edit run script
- :param run_script_id:
- :param name:
- :param saved_name:
- :param description:
- :param is_active:
- :return:
- """
- script_obj = WorkflowScript.objects.filter(id=run_script_id, is_deleted=0)
- if saved_name:
- script_obj.update(name=name, saved_name=saved_name, description=description, is_active=is_active)
- else:
- script_obj.update(name=name, description=description, is_active=is_active)
- return True, {}
- @classmethod
- @auto_log
- def del_run_script(cls, run_script_id: int)->tuple:
- """
- 删除脚本
- delete run script
- :id:
- :return:
- """
- script_obj = WorkflowScript.objects.filter(id=run_script_id, is_deleted=0)
- if script_obj:
- script_obj.update(is_deleted=True)
- return True, ''
- else:
- return False, 'the record is not exist or has been deleted'
- @classmethod
- @auto_log
- def get_run_script_by_id(cls, run_script_id: int)->tuple:
- """
- 根据id获取执行脚本
- get script by id
- :param run_script_id:
- :return:
- """
- script_obj = WorkflowScript.objects.filter(id=run_script_id, is_deleted=0).first()
- return True, dict(script_obj=script_obj)
- workflow_run_script_service_ins = WorkflowRunScriptService()
|