Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
 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)
Exemple #4
0
 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)
Exemple #5
0
    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)
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #8
0
 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)
Exemple #9
0
    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)