コード例 #1
0
    def delete(self, req, team_id, user_id):
        if req.user.user_id == user_id:
            raise serializers.ValidationError("不能删除自己", status.HTTP_400_BAD_REQUEST)

        try:
            user_services.get_user_by_tenant_id(team_id, user_id)
            user_services.batch_delete_users(team_id, [user_id])
            return Response(None, status.HTTP_200_OK)
        except UserNotExistError as e:
            return Response({"msg": e.message}, status.HTTP_404_NOT_FOUND)
        except Tenants.DoesNotExist:
            return Response({"msg": "团队不存在"}, status.HTTP_404_NOT_FOUND)
コード例 #2
0
 def delete(self, request, team_name, *args, **kwargs):
     """
     删除租户内的用户
     (可批量可单个)
     ---
     parameters:
         - name: team_name
           description: 团队名称
           required: true
           type: string
           paramType: path
         - name: user_ids
           description: 用户名 user_id1,user_id2 ...
           required: true
           type: string
           paramType: body
     """
     try:
         no_auth = "owner" not in team_services.get_user_perm_identitys_in_permtenant(
             user_id=request.user.user_id, tenant_name=team_name)
         if no_auth:
             code = 400
             result = general_message(code, "no identity", "没有权限")
         else:
             user_ids = str(request.data.get("user_ids", None))
             if not user_ids:
                 result = general_message(400, "failed", "删除成员不能为空")
                 return Response(result, status=400)
             if str(request.user.user_id) in user_ids:
                 result = general_message(400, "failed", "不能删除自己")
                 return Response(result, status=400)
             try:
                 user_id_list = user_ids.split(",")
                 user_services.batch_delete_users(team_name, user_id_list)
                 result = general_message(200, "delete the success", "删除成功")
             except Tenants.DoesNotExist as e:
                 logger.exception(e)
                 result = generate_result(400, "tenant not exist",
                                          "{}团队不存在".format(team_name))
             except Exception as e:
                 logger.exception(e)
                 result = error_message(e.message)
             return Response(result)
     except Exception as e:
         code = 500
         logger.exception(e)
         result = error_message(e.message)
     return Response(result, status=code)
コード例 #3
0
    def delete(self, request, team_name, *args, **kwargs):
        """
        删除租户内的用户
        (可批量可单个)
        ---
        parameters:
            - name: team_name
              description: 团队名称
              required: true
              type: string
              paramType: path
            - name: user_ids
              description: 用户名 user_id1,user_id2 ...
              required: true
              type: string
              paramType: body
        """
        try:
            user_ids = request.data.get("user_ids", [])
            if not user_ids:
                result = general_message(400, "failed", "删除成员不能为空")
                return Response(result, status=400)

            if request.user.user_id in user_ids:
                result = general_message(400, "failed", "不能删除自己")
                return Response(result, status=400)

            for user_id in user_ids:
                if user_id == self.tenant.creater:
                    result = general_message(400, "failed", "不能删除团队创建者!")
                    return Response(result, status=400)
            try:
                user_services.batch_delete_users(team_name, user_ids)
                result = general_message(200, "delete the success", "删除成功")
            except Tenants.DoesNotExist as e:
                logger.exception(e)
                result = general_message(400, "tenant not exist",
                                         "{}团队不存在".format(team_name))
            except Exception as e:
                logger.exception(e)
                result = error_message(e.message)
            return Response(result)
        except Exception as e:
            code = 500
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=code)
コード例 #4
0
    def delete(self, request, team_name, *args, **kwargs):
        """
        删除租户内的用户
        (可批量可单个)
        ---
        parameters:
            - name: team_name
              description: 团队名称
              required: true
              type: string
              paramType: path
            - name: user_ids
              description: 用户名 user_id1,user_id2 ...
              required: true
              type: string
              paramType: body
        """
        try:
            identitys = team_services.get_user_perm_identitys_in_permtenant(
                user_id=request.user.user_id,
                tenant_name=team_name
            )

            perm_tuple = team_services.get_user_perm_in_tenant(user_id=request.user.user_id, tenant_name=team_name)

            if "owner" not in identitys and "admin" not in identitys and "manage_team_member_permissions" not in perm_tuple:
                code = 400
                result = general_message(code, "no identity", "没有权限")
                return Response(result, status=code)

            user_ids = str(request.data.get("user_ids", None))
            if not user_ids:
                result = general_message(400, "failed", "删除成员不能为空")
                return Response(result, status=400)

            try:
                user_id_list = [int(user_id) for user_id in user_ids.split(",")]
            except Exception as e:
                logger.exception(e)
                result = general_message(200, "Incorrect parameter format", "参数格式不正确")
                return Response(result, status=400)

            if request.user.user_id in user_id_list:
                result = general_message(400, "failed", "不能删除自己")
                return Response(result, status=400)

            for user_id in user_id_list:
                print user_id
                role_name_list = team_services.get_user_perm_role_in_permtenant(user_id=user_id, tenant_name=team_name)
                identity_list = team_services.get_user_perm_identitys_in_permtenant(user_id=user_id,
                                                                                    tenant_name=team_name)
                print role_name_list
                if "owner" in role_name_list or "owner" in identity_list:
                    result = general_message(400, "failed", "不能删除团队创建者!")
                    return Response(result, status=400)
            try:
                user_services.batch_delete_users(team_name, user_id_list)
                result = general_message(200, "delete the success", "删除成功")
            except Tenants.DoesNotExist as e:
                logger.exception(e)
                result = generate_result(400, "tenant not exist", "{}团队不存在".format(team_name))
            except Exception as e:
                logger.exception(e)
                result = error_message(e.message)
            return Response(result)
        except Exception as e:
            code = 500
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=code)