def post(self, request, *args, **kwargs): """ 新建工单,需要根据不同类型工单传的参数不一样 :param request: :param args: :param kwargs: :return: """ json_str = request.body.decode('utf-8') if not json_str: return api_response(-1, 'post参数为空', {}) request_data_dict = json.loads(json_str) app_name = request.META.get('HTTP_APPNAME') from service.account.account_base_service import AccountBaseService # 判断是否有创建某工单的权限 app_permission, msg = AccountBaseService.app_workflow_permission_check(app_name, request_data_dict.get('workflow_id')) if not app_permission: return api_response(-1, 'APP:{} have no permission to create this workflow ticket'.format(app_name), '') new_ticket_result, msg = TicketBaseService.new_ticket(request_data_dict, app_name) if new_ticket_result: code, data = 0, {'ticket_id': new_ticket_result} else: code, data = -1, {} return api_response(code, msg, data)
def get(self, request, *args, **kwargs): """ 获取工作流初始状态信息,包括状态详情以及允许的transition :param request: :param args: :param kwargs: :return: """ workflow_id = kwargs.get('workflow_id') request_data = request.GET # username = request_data.get('username', '') # 后续会根据username做必要的权限控制 username = request.META.get('HTTP_USERNAME') app_name = request.META.get('HTTP_APPNAME') from service.account.account_base_service import AccountBaseService # 判断是否有工作流的权限 app_permission, msg = AccountBaseService.app_workflow_permission_check( app_name, workflow_id) if not app_permission: return api_response( -1, 'APP:{} have no permission to get this workflow info'.format( app_name), '') if not (workflow_id and username): return api_response(-1, '请提供username', '') state_result, msg = WorkflowStateService.get_workflow_init_state( workflow_id) if state_result is not False: code, msg, data = 0, '', state_result else: code, msg, data = -1, msg, '' return api_response(code, msg, data)
def delete(self, request, *args, **kwargs): """ 删除工作流 :param request: :param args: :param kwargs: :return: """ app_name = request.META.get('HTTP_APPNAME') workflow_id = kwargs.get('workflow_id') from service.account.account_base_service import AccountBaseService # 判断是否有工作流的权限 app_permission, msg = AccountBaseService.app_workflow_permission_check( app_name, workflow_id) if not app_permission: return api_response( -1, 'APP:{} have no permission to get this workflow info'.format( app_name), '') result, msg = WorkflowBaseService.delete_workflow(workflow_id) if not result: code, msg, data = -1, msg, {} else: code, msg, data = 0, '', {'workflow_id': result} return api_response(code, msg, data)
def get(self, request, *args, **kwargs): """ 获取工作流详情 :param request: :param args: :param kwargs: :return: """ workflow_id = kwargs.get('workflow_id') app_name = request.META.get('HTTP_APPNAME') from service.account.account_base_service import AccountBaseService # 判断是否有工作流的权限 app_permission, msg = AccountBaseService.app_workflow_permission_check( app_name, workflow_id) if not app_permission: return api_response( -1, 'APP:{} have no permission to get this workflow info'.format( app_name), '') workflow_result, msg = WorkflowBaseService.get_by_id(workflow_id) if not workflow_result: code, msg, data = -1, msg, {} else: data = dict( name=workflow_result.name, description=workflow_result.description, notices=workflow_result.notices, view_permission_check=workflow_result.view_permission_check, limit_expression=workflow_result.limit_expression, display_form_str=workflow_result.display_form_str, creator=workflow_result.creator, gmt_created=str(workflow_result.gmt_created)[:19]) code = 0 return api_response(code, msg, data)
def post(self, request, *args, **kwargs): """ 新建工单,需要根据不同类型工单传的参数不一样 :param request: :param args: :param kwargs: :return: """ json_str = request.body.decode('utf-8') if not json_str: return api_response(-1, 'post参数为空', {}) request_data_dict = json.loads(json_str) if not(isinstance(request_data_dict.get('workflow_id', None), int) and isinstance(request_data_dict.get('transition_id', None), int)): # 临时先这么判断,后续针对所有view统一使用更优雅的方式来处理 return api_response(-1, 'workflow_id或transition_id类型不合法', {}) app_name = request.META.get('HTTP_APPNAME') request_data_dict.update(dict(username=request.META.get('HTTP_USERNAME'))) from service.account.account_base_service import AccountBaseService # 判断是否有创建某工单的权限 app_permission, msg = AccountBaseService.app_workflow_permission_check(app_name, request_data_dict.get('workflow_id')) if not app_permission: return api_response(-1, 'APP:{} have no permission to create this workflow ticket'.format(app_name), '') new_ticket_result, msg = TicketBaseService.new_ticket(request_data_dict, app_name) if new_ticket_result: code, data = 0, {'ticket_id': new_ticket_result} else: code, data = -1, {} return api_response(code, msg, data)
def patch(self, request, *args, **kwargs): """ 修改工作流 :param request: :param args: :param kwargs: :return: """ json_str = request.body.decode('utf-8') if not json_str: return api_response(-1, 'post参数为空', {}) request_data_dict = json.loads(json_str) app_name = request.META.get('HTTP_APPNAME') workflow_id = kwargs.get('workflow_id') from service.account.account_base_service import AccountBaseService # 判断是否有工作流的权限 app_permission, msg = AccountBaseService.app_workflow_permission_check( app_name, workflow_id) if not app_permission: return api_response( -1, 'APP:{} have no permission to get this workflow info'.format( app_name), '') name = request_data_dict.get('name', '') description = request_data_dict.get('description', '') notices = request_data_dict.get('notices', '') view_permission_check = request_data_dict.get('view_permission_check', 1) limit_expression = request_data_dict.get('limit_expression', '') display_form_str = request_data_dict.get('display_form_str', '') workflow_admin = request_data_dict.get('workflow_admin', '') title_template = request_data_dict.get('title_template', '') content_template = request_data_dict.get('content_template', '') intervener = request_data_dict.get('intervener', '') view_depts = request_data_dict.get('view_depts', '') view_persons = request_data_dict.get('view_persons', '') api_permission_apps = request_data_dict.get('api_permission_apps', '') flag, result = workflow_base_service_ins.edit_workflow( workflow_id, name, description, notices, view_permission_check, limit_expression, display_form_str, workflow_admin, title_template, content_template, intervener, view_depts, view_persons, api_permission_apps) if flag is False: code, msg, data = -1, result, {} else: code, msg, data = 0, '', {} return api_response(code, msg, data)
def patch(self, request, *args, **kwargs): """ 更新自定义字段 :param request: :param args: :param kwargs: :return: """ custom_field_id = kwargs.get('custom_field_id') app_name = request.META.get('HTTP_APPNAME') username = request.META.get('HTTP_USERNAME') workflow_id = kwargs.get('workflow_id') # 判断是否有工作流的权限 from service.account.account_base_service import AccountBaseService app_permission, msg = AccountBaseService.app_workflow_permission_check( app_name, workflow_id) if not app_permission: return api_response( -1, 'APP:{} have no permission to get this workflow info'.format( app_name), '') json_str = request.body.decode('utf-8') if not json_str: return api_response(-1, 'post参数为空', {}) request_data_dict = json.loads(json_str) field_key = request_data_dict.get('field_key', '') field_name = request_data_dict.get('field_name', '') field_type_id = request_data_dict.get('field_type_id', '') order_id = int(request_data_dict.get('order_id', 0)) label = request_data_dict.get('label', '') description = request_data_dict.get('description', '') field_template = request_data_dict.get('field_template', '') default_value = request_data_dict.get('default_value', '') boolean_field_display = request_data_dict.get('boolean_field_display', '') field_choice = request_data_dict.get('field_choice', '') result, msg = WorkflowCustomFieldService.edit_record( custom_field_id, workflow_id, field_type_id, field_key, field_name, order_id, default_value, description, field_template, boolean_field_display, field_choice, label, username) if result is not False: data = dict(value={'custom_field_id': result}) code, msg, = 0, '' else: code, data = -1, '' return api_response(code, msg, data)
def delete(self, request, *args, **kwargs): """删除记录""" app_name = request.META.get('HTTP_APPNAME') username = request.META.get('HTTP_USERNAME') workflow_id = kwargs.get('workflow_id') custom_field_id = kwargs.get('custom_field_id') # 判断是否有工作流的权限 from service.account.account_base_service import AccountBaseService app_permission, msg = AccountBaseService.app_workflow_permission_check( app_name, workflow_id) if not app_permission: return api_response( -1, 'APP:{} have no permission to get this workflow info'.format( app_name), '') result, msg = WorkflowCustomFieldService.delete_record(custom_field_id) if result is not False: data = dict(value={'custom_field_id': result}) code, msg, = 0, '' else: code, data = -1, '' return api_response(code, msg, data)
def patch(self, request, *args, **kwargs): """ 修改工作流 :param request: :param args: :param kwargs: :return: """ json_str = request.body.decode('utf-8') if not json_str: return api_response(-1, 'post参数为空', {}) request_data_dict = json.loads(json_str) app_name = request.META.get('HTTP_APPNAME') workflow_id = kwargs.get('workflow_id') from service.account.account_base_service import AccountBaseService # 判断是否有工作流的权限 app_permission, msg = AccountBaseService.app_workflow_permission_check( app_name, workflow_id) if not app_permission: return api_response( -1, 'APP:{} have no permission to get this workflow info'.format( app_name), '') name = request_data_dict.get('name', '') description = request_data_dict.get('description', '') notices = request_data_dict.get('notices', '') view_permission_check = request_data_dict.get('view_permission_check', 1) limit_expression = request_data_dict.get('limit_expression', '') display_form_str = request_data_dict.get('display_form_str', '') result, msg = WorkflowBaseService.edit_workflow( workflow_id, name, description, notices, view_permission_check, limit_expression, display_form_str) if not result: code, msg, data = -1, msg, {} else: code, msg, data = 0, '', {'workflow_id': result} return api_response(code, msg, data)