Ejemplo n.º 1
0
    def get_workflow_manage_list(cls, username: str) -> tuple:
        """
        获取有管理权限的工作流列表
        :param username:
        :return:
        """
        # 如果是admin,拥有所有工作流的权限
        flag, result = account_base_service_ins.admin_permission_check(
            username=username)
        if flag:
            workflow_queryset = Workflow.objects.filter(is_deleted=0).all()
        else:
            # 作为工作流创建人+工作流管理员的工作流
            workflow_admin_queryset = WorkflowAdmin.objects.filter(
                username=username, is_deleted=0).all()
            workflow_admin_id_list = [
                workflow_admin.workflow_id
                for workflow_admin in workflow_admin_queryset
            ]

            workflow_queryset = Workflow.objects.filter(
                Q(creator=username, is_deleted=0)
                | Q(id__in=workflow_admin_id_list, is_deleted=0)).all()

        workflow_restful_list = [
            workflow.get_dict() for workflow in workflow_queryset
        ]

        return True, dict(workflow_list=workflow_restful_list)
Ejemplo n.º 2
0
    def patch(self, request, *args, **kwargs):
        """
        修改通知
        :param request:
        :param args:
        :param kwargs:
        :return:
        """
        notice_id = kwargs.get('notice_id')

        json_str = request.body.decode('utf-8')
        if not json_str:
            return api_response(-1, 'post参数为空', {})
        request_data_dict = json.loads(json_str)

        name = request_data_dict.get('name', '')
        description = request_data_dict.get('description', '')
        hook_url = request_data_dict.get('hook_url', '')
        hook_token = request_data_dict.get('hook_token', '')
        creator = request.user.username

        flag, result = account_base_service_ins.admin_permission_check(creator)
        if flag is False:
            return api_response(-1, result, {})

        result, msg = workflow_custom_notice_service_ins.update_custom_notice(
            notice_id, name, description, hook_url, hook_token)
        if result is not False:
            data = {}
            code, msg, = 0, ''
        else:
            code, data = -1, {}
        return api_response(code, msg, data)
Ejemplo n.º 3
0
 def _deco(view_class, request, *args, **kwargs):
     username = request.META.get('HTTP_USERNAME')
     if permission == 'admin':
         flag, result = account_base_service_ins.admin_permission_check(
             username)
         if flag is False:
             return api_response(-1,
                                 'has no permission:{}'.format(result),
                                 {})
     elif permission == 'workflow_admin':
         flag, result = account_base_service_ins.workflow_admin_permission_check(
             username)
         if flag is False:
             return api_response(-1,
                                 'has no permission:{}'.format(result),
                                 {})
     return func(view_class, request, *args, **kwargs)
Ejemplo n.º 4
0
    def post(self, request, *args, **kwargs):
        """
        add notice record
        新增通知记录
        :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)

        creator = request.META.get('HTTP_USERNAME')
        name = request_data_dict.get('name', '')
        description = request_data_dict.get('description', '')
        type_id = request_data_dict.get('type_id', 1)
        hook_url = request_data_dict.get('hook_url', '')
        hook_token = request_data_dict.get('hook_token', '')
        corpid = request_data_dict.get('corpid', '')
        corpsecret = request_data_dict.get('corpsecret', '')
        appkey = request_data_dict.get('appkey', '')
        appsecret = request_data_dict.get('appsecret', '')

        flag, result = account_base_service_ins.admin_permission_check(creator)
        if flag is False:
            return api_response(-1, result, {})

        result, msg = workflow_custom_notice_service_ins.add_custom_notice(
            name, description, type_id, corpid, corpsecret, appkey, appsecret,
            hook_url, hook_token, creator)
        if result is not False:
            data = msg
            code, msg, = 0, ''
        else:
            code, data = -1, {}
        return api_response(code, msg, data)