def post(self, request): serializer = CreateTeamReqSerializer(data=request.data) serializer.is_valid(raise_exception=True) team_data = serializer.data en = enterprise_services.get_enterprise_by_enterprise_id(request.data.get("enterprise_id")) if not en: raise serializers.ValidationError("指定企业不存在") region = None if team_data.get("region", None): region = region_services.get_region_by_region_name(team_data.get("region")) if not region: raise serializers.ValidationError("指定数据中心不存在") try: user = user_services.get_user_by_user_id(team_data.get("creater", 0)) except UserNotExistError: user = request.user code, msg, team = team_services.create_team(user, en, team_alias=team_data["tenant_name"]) if code == 200 and region: code, message, bean = region_services.create_tenant_on_region(team.tenant_name, region.region_name) if code != 200: team.delete() raise serializers.ValidationError("数据中心创建团队时发生错误") if code == 200: re = TeamBaseInfoSerializer(team) return Response(re.data, status=status.HTTP_201_CREATED) else: return Response(None, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def get_enterprise_teams(self, enterprise_id, user_id=None, query=None, page=None, page_size=None): from console.services.user_services import user_services if query is not None and page is not None and page_size is not None: tall = team_repo.get_teams_by_enterprise_id(enterprise_id, user_id=user_id, query=query) total = tall.count() paginator = Paginator(tall, page_size) raw_tenants = paginator.page(page) tenants = [] for ent in raw_tenants: user = user_services.get_user_by_user_id(ent.creater) tenants.append({ "tenant_id": ent.tenant_id, "tenant_name": ent.tenant_name, "region": ent.region, "is_active": ent.is_active, "create_time": ent.create_time, "creater": user.nick_name, "tenant_alias": ent.tenant_alias, "enterprise_id": ent.enterprise_id, }) result = {"total": total, "tenants": tenants} else: result = team_repo.get_teams_by_enterprise_id(enterprise_id) return result
def post(self, request): serializer = CreateTeamReqSerializer(data=request.data) serializer.is_valid(raise_exception=True) team_data = serializer.data team_data["creater"] = self.user.user_id team_data["enterprise_id"] = self.enterprise.enterprise_id en = self.enterprise if not en: raise serializers.ValidationError("指定企业不存在") region = None if team_data.get("region", None): region = region_services.get_region_by_region_name( team_data.get("region")) if not region: raise ErrRegionNotFound try: user = user_services.get_user_by_user_id( team_data.get("creater", 0)) except UserNotExistError: user = request.user team = team_services.create_team(user, en, team_alias=team_data["tenant_name"]) if region: region_services.create_tenant_on_region( self.enterprise.enterprise_id, team.tenant_name, region.region_name) re = TeamBaseInfoSerializer(team) return Response(re.data, status=status.HTTP_201_CREATED)
def post(self, req, team_id, user_id): serializer = CreateTeamUserReqSerializer(data=req.data) serializer.is_valid(raise_exception=True) try: team = team_services.get_team_by_team_id(team_id) except Tenants.DoesNotExist: raise exceptions.NotFound() role_ids = req.data["role_ids"].replace(" ", "").split(",") roleids = team_services.get_all_team_role_id(tenant_name=team_id, allow_owner=True) for role_id in role_ids: if int(role_id) not in roleids: raise serializers.ValidationError("角色{}不存在".format(role_id), status.HTTP_404_NOT_FOUND) flag = team_services.user_is_exist_in_team(user_list=[user_id], tenant_name=team_id) if flag: user_obj = user_services.get_user_by_user_id(user_id=user_id) raise serializers.ValidationError( "用户{}已经存在".format(user_obj.nick_name), status.HTTP_400_BAD_REQUEST) team_services.add_user_role_to_team(tenant=team, user_ids=[user_id], role_ids=role_ids) return Response(None, status.HTTP_201_CREATED)
def get(self, req, user_id, *args, **kwargs): try: uid = int(user_id) user = user_services.get_user_by_user_id(uid) except (ValueError, UserNotExistError): try: user = user_services.get_user_by_user_name(user_id) except UserNotExistError: return Response(None, status.HTTP_404_NOT_FOUND) serializer = UserInfoSerializer(user) return Response(serializer.data)
def post(self, request, enterprise_id, *args, **kwargs): user_id = request.data.get("user_id") try: user = user_services.get_user_by_user_id(user_id) ent = enterprise_services.get_enterprise_by_enterprise_id( enterprise_id) if ent is None: result = general_message(404, "no found", "未找到该企业") else: user_services.create_admin_user(user, ent) result = general_message(201, "success", None) except UserNotExistError: result = general_message(404, "no found", "未找到该用户") return Response(result, status=201)
def post(self, req, *args, **kwargs): serializer = CreateAdminUserReqSerializer(data=req.data) serializer.is_valid(raise_exception=True) try: user = user_services.get_user_by_user_id(req.data["user_id"]) except UserNotExistError: raise exceptions.NotFound("用户'{}'不存在".format(req.data["user_id"])) ent = enterprise_services.get_enterprise_by_enterprise_id(req.data["eid"]) if ent is None: raise serializers.ValidationError("企业'{}'不存在".format(req.data["eid"]), status.HTTP_404_NOT_FOUND) user_services.create_admin_user(user, ent) return Response(None, status.HTTP_201_CREATED)
def post(self, request, enterprise_id, *args, **kwargs): roles = parse_item(request, "roles", required=True, error="at least one role needs to be specified") if not set(roles).issubset(EnterpriseRolesEnum.names()): raise AbortRequest("invalid roles", msg_show="角色不正确") user_id = request.data.get("user_id") if user_id == self.user.user_id: raise AbortRequest("cannot edit your own role", msg_show="不可操作自己的角色") try: user = user_services.get_user_by_user_id(user_id) except UserNotExistError: raise ErrUserNotFound ent = enterprise_services.get_enterprise_by_enterprise_id(enterprise_id) if ent is None: raise ErrEnterpriseNotFound user_services.create_admin_user(user, ent, roles) return Response(general_message(201, "success", None), status=201)
def put(self, req, team_id, *args, **kwargs): serializer = UpdateTeamInfoReqSerializer(data=req.data) serializer.is_valid(raise_exception=True) if req.data.get("enterprise_id", ""): ent = enterprise_services.get_enterprise_by_enterprise_id() if not ent: raise serializers.ValidationError("指定企业不存在", status.HTTP_404_NOT_FOUND) if req.data.get("creator", 0): try: ent = user_services.get_user_by_user_id(req.data.get("creator")) except UserNotExistError: raise serializers.ValidationError("指定用户不存在", status.HTTP_404_NOT_FOUND) try: team_services.update(team_id, req.data) return Response(None, status.HTTP_200_OK) except Tenants.DoesNotExist: return Response(None, status.HTTP_404_NOT_FOUND)
def post(self, request, team_name, *args, **kwargs): """ 团队中添加新用户给用户分配一个角色 --- parameters: - name: team_name description: 团队名称 required: true type: string paramType: path - name: user_ids description: 添加成员id 格式 {'user_ids':'1,2'} required: true type: string paramType: body - name: role_ids description: 选择角色 格式{"role_ids": "1,2,3"} required: true type: string paramType: body """ perm_list = team_services.get_user_perm_identitys_in_permtenant( user_id=request.user.user_id, tenant_name=team_name) # 根据用户在一个团队的角色来获取这个角色对应的所有权限操作 role_perm_tuple = team_services.get_user_perm_in_tenant( user_id=request.user.user_id, tenant_name=team_name) no_auth = ("owner" not in perm_list) and ( "admin" not in perm_list ) and "manage_team_member_permissions" not in role_perm_tuple if no_auth: code = 400 result = general_message(code, "no identity", "您没有权限做此操作") return Response(result, status=code) try: user_ids = request.data.get('user_ids', None) role_ids = request.data.get('role_ids', None) if not user_ids: raise ParamsError("用户名为空") if not role_ids: raise ParamsError("角色ID为空") try: user_ids = [int(user_id) for user_id in user_ids.split(",")] role_ids = [int(user_id) for user_id in role_ids.split(",")] except Exception as e: code = 400 logger.exception(e) result = general_message(code, "Incorrect parameter format", "参数格式不正确") return Response(result, status=code) for role_id in role_ids: if role_id not in team_services.get_all_team_role_id( tenant_name=team_name): code = 400 result = general_message(code, "The role does not exist", "该角色在团队中不存在") return Response(result, status=code) user_id = team_services.user_is_exist_in_team( user_list=user_ids, tenant_name=team_name) if user_id: user_obj = user_services.get_user_by_user_id(user_id=user_id) code = 400 result = general_message(code, "user already exist", "用户{}已经存在".format(user_obj.nick_name)) return Response(result, status=code) code = 200 team = team_services.get_tenant(tenant_name=team_name) team_services.add_user_role_to_team(request=request, tenant=team, user_ids=user_ids, role_ids=role_ids) result = general_message(code, "success", "用户添加到{}成功".format(team_name)) except ParamsError as e: logging.exception(e) code = 400 result = general_message(code, "params is empty", e.message) except UserNotExistError as e: code = 400 result = general_message(code, "user not exist", e.message) except Tenants.DoesNotExist as e: code = 400 logger.exception(e) result = general_message(code, "tenant not exist", "{}团队不存在".format(team_name)) except Exception as e: code = 500 logger.exception(e) print(str(e)) result = general_message(code, "system error", "系统异常") return Response(result, status=code)
def post(self, request, team_name, *args, **kwargs): """ 团队中添加新用户给用户分配一个角色 --- parameters: - name: team_name description: 团队名称 required: true type: string paramType: path - name: user_ids description: 添加成员id 格式 {'user_ids':'1,2'} required: true type: string paramType: body - name: role_ids description: 选择角色 格式{"role_ids": "1,2,3"} required: true type: string paramType: body """ try: user_ids = request.data.get('user_ids', None) role_ids = request.data.get('role_ids', None) if not user_ids: raise ParamsError("用户名为空") if not role_ids: raise ParamsError("角色ID为空") try: user_ids = [int(user_id) for user_id in user_ids.split(",")] role_ids = [int(user_id) for user_id in role_ids.split(",")] except Exception as e: code = 400 logger.exception(e) result = general_message(code, "Incorrect parameter format", "参数格式不正确") return Response(result, status=code) user_id = team_services.user_is_exist_in_team(user_list=user_ids, tenant_name=team_name) if user_id: user_obj = user_services.get_user_by_user_id(user_id=user_id) code = 400 result = general_message(code, "user already exist", "用户{}已经存在".format(user_obj.nick_name)) return Response(result, status=code) code = 200 team = team_services.get_tenant(tenant_name=team_name) team_services.add_user_role_to_team(tenant=team, user_ids=user_ids, role_ids=role_ids) result = general_message(code, "success", "用户添加到{}成功".format(team_name)) except ParamsError as e: logging.exception(e) code = 400 result = general_message(code, "params is empty", e.message) except UserNotExistError as e: code = 400 result = general_message(code, "user not exist", e.message) except Tenants.DoesNotExist as e: code = 400 logger.exception(e) result = general_message(code, "tenant not exist", "{}团队不存在".format(team_name)) return Response(result, status=code)