Example #1
0
    def list_users_by_tenant_id(self,
                                tenant_id,
                                page=None,
                                size=None,
                                query=""):
        result = user_repo.list_users_by_tenant_id(tenant_id,
                                                   query=query,
                                                   page=page,
                                                   size=size)
        users = []
        for item in result:
            user = user_repo.get_by_user_id(item.get("user_id"))
            role_infos = user_kind_role_service.get_user_roles(
                kind="team", kind_id=tenant_id, user=user)
            users.append({
                "user_id": item.get("user_id"),
                "nick_name": item.get("nick_name"),
                "email": item.get("email"),
                "phone": item.get("phone"),
                "is_active": item.get("is_active"),
                "enterprise_id": item.get("enterprise_id"),
                "role_infos": role_infos["roles"],
            })

        total = user_repo.count_users_by_tenant_id(tenant_id, query=query)
        return users, total
Example #2
0
 def get(self, request, team_name, user_id, *args, **kwargs):
     team_users = team_services.get_team_users(self.tenant)
     user = team_users.filter(user_id=user_id).first()
     data = user_kind_role_service.get_user_roles(
         kind="team", kind_id=self.tenant.tenant_id, user=user)
     result = general_message(200, "success", None, bean=data)
     return Response(result, status=200)
 def list_teams_by_user_id(self, eid, user_id, query=None, page=None, page_size=None):
     tenants = team_repo.list_by_user_id(eid, user_id, query, page, page_size)
     total = team_repo.count_by_user_id(eid, user_id, query)
     user = user_repo.get_by_user_id(user_id)
     for tenant in tenants:
         roles = user_kind_role_service.get_user_roles(kind="team", kind_id=tenant["tenant_id"], user=user)
         tenant["role_infos"] = roles["roles"]
     return tenants, total
    def get(self, request, *args, **kwargs):
        """
        查询我的详情
        ---
        """
        code = 200
        user = self.user
        tenants = team_services.get_current_user_tenants(user_id=user.user_id)
        user_detail = dict()
        user_detail["user_id"] = user.user_id
        user_detail["user_name"] = user.nick_name
        user_detail["email"] = user.email
        user_detail["enterprise_id"] = user.enterprise_id
        user_detail["phone"] = user.phone
        user_detail["git_user_id"] = user.git_user_id
        user_detail["is_sys_admin"] = user.is_sys_admin
        enterprise = enterprise_services.get_enterprise_by_enterprise_id(
            user.enterprise_id)
        user_detail["is_enterprise_active"] = enterprise.is_active
        user_detail["is_enterprise_admin"] = self.is_enterprise_admin
        tenant_list = list()
        for tenant in tenants:
            tenant_info = dict()
            is_team_owner = False
            team_region_list = region_services.get_region_list_by_team_name(
                team_name=tenant.tenant_name)
            tenant_info["team_id"] = tenant.ID
            tenant_info["team_name"] = tenant.tenant_name
            tenant_info["team_alias"] = tenant.tenant_alias
            tenant_info["limit_memory"] = tenant.limit_memory
            tenant_info["pay_level"] = tenant.pay_level
            tenant_info["region"] = team_region_list
            tenant_info["creater"] = tenant.creater
            tenant_info["create_time"] = tenant.create_time

            if tenant.creater == user.user_id:
                is_team_owner = True
            role_list = user_kind_role_service.get_user_roles(
                kind="team", kind_id=tenant.tenant_id, user=user)
            tenant_info["role_name_list"] = role_list["roles"]
            perms = user_kind_perm_service.get_user_perms(
                kind="team",
                kind_id=tenant.tenant_id,
                user=user,
                is_owner=is_team_owner,
                is_ent_admin=self.is_enterprise_admin)
            tenant_info["tenant_actions"] = perms["permissions"]
            tenant_info["is_team_owner"] = is_team_owner
            tenant_list.append(tenant_info)
        user_detail["teams"] = tenant_list
        oauth_services = oauth_user_repo.get_user_oauth_services_info(
            eid=request.user.enterprise_id, user_id=request.user.user_id)
        user_detail["oauth_services"] = oauth_services
        result = general_message(code,
                                 "Obtain my details to be successful.",
                                 "获取我的详情成功",
                                 bean=user_detail)
        return Response(result, status=code)
Example #5
0
 def create_user_roles(eid, user_id, tenant_name, role_ids):
     # the user must belong to the enterprise with eid
     user = user_repo.get_enterprise_user_by_id(eid, user_id)
     if not user:
         raise ErrUserNotFound
     tenant = team_repo.get_enterprise_team_by_name(eid, tenant_name)
     if not tenant:
         raise ErrTenantNotFound
     from console.services.team_services import team_services
     team_services.add_user_to_team(tenant, user.user_id, role_ids=role_ids)
     return user_kind_role_service.get_user_roles(kind="team", kind_id=tenant.tenant_id, user=user)
 def get_user_perm_identitys_in_permtenant(self, user_id, tenant_name):
     """获取用户在一个团队的身份列表"""
     user = user_repo.get_by_user_id(user_id)
     try:
         tenant = self.get_tenant(tenant_name=tenant_name)
     except Tenants.DoesNotExist:
         tenant = self.get_team_by_team_id(tenant_name)
         if tenant is None:
             raise Tenants.DoesNotExist()
     user_roles = user_kind_role_service.get_user_roles(kind_id=tenant.ID, kind="team", user=user)
     if tenant.creater == user_id:
         user_roles["roles"].append("owner")
     return user_roles
Example #7
0
 def get(self, request, team_name, *args, **kwargs):
     """
     获取某团队下的所有用户(每页展示八个用户)
     ---
     parameters:
         - name: team_name
           description: 团队名称
           required: true
           type: string
           paramType: path
         - name: page
           description: 页数
           required: true
           type: string
           paramType: query
     """
     code = 200
     page = request.GET.get("page", 1)
     name = request.GET.get("query", None)
     user_list = team_services.get_team_users(self.tenant, name)
     if not user_list:
         users = []
         total = 0
     else:
         users_list = list()
         for user in user_list:
             # get role list
             role_info_list = user_kind_role_service.get_user_roles(
                 kind="team", kind_id=self.tenant.tenant_id, user=self.user)
             users_list.append({
                 "user_id": user.user_id,
                 "user_name": user.get_name(),
                 "nick_name": user.nick_name,
                 "email": user.email,
                 "role_info": role_info_list["roles"]
             })
         paginator = Paginator(users_list, 8)
         total = paginator.count
         try:
             users = paginator.page(page).object_list
         except PageNotAnInteger:
             users = paginator.page(1).object_list
         except EmptyPage:
             users = paginator.page(paginator.num_pages).object_list
     result = general_message(code,
                              "team members query success",
                              "查询成功",
                              list=users,
                              total=total)
     return Response(data=result, status=code)
    def team_with_region_info(self,
                              tenant,
                              request_user=None,
                              get_region=True):
        try:
            user = user_repo.get_user_by_user_id(tenant.creater)
            owner_name = user.get_name()
        except UserNotExistError:
            owner_name = None

        info = {
            "team_name": tenant.tenant_name,
            "team_alias": tenant.tenant_alias,
            "team_id": tenant.tenant_id,
            "create_time": tenant.create_time,
            "enterprise_id": tenant.enterprise_id,
            "owner": tenant.creater,
            "owner_name": owner_name,
        }

        if request_user:
            user_role_list = user_kind_role_service.get_user_roles(
                kind="team", kind_id=tenant.tenant_id, user=request_user)
            roles = [x["role_name"] for x in user_role_list["roles"]]
            if tenant.creater == request_user.user_id:
                roles.append("owner")
            info["roles"] = roles

        if get_region:
            region_info_map = []
            region_name_list = team_repo.get_team_region_names(
                tenant.tenant_id)
            if region_name_list:
                region_infos = region_repo.get_region_by_region_names(
                    region_name_list)
                if region_infos:
                    for region in region_infos:
                        region_info_map.append({
                            "region_name":
                            region.region_name,
                            "region_alias":
                            region.region_alias
                        })
            info["region"] = region_info_map[0]["region_name"] if len(
                region_info_map) > 0 else ""
            info["region_list"] = region_info_map

        return info
Example #9
0
 def get(self, request, team_name, user_name, *args, **kwargs):
     """
     用户详情
     ---
     parameters:
         - name: team_name
           description: 团队名
           required: true
           type: string
           paramType: path
         - name: user_name
           description: 用户名
           required: true
           type: string
           paramType: path
     """
     is_team_owner = False
     try:
         team = team_services.get_tenant_by_tenant_name(team_name)
         data = dict()
         data["nick_name"] = self.user.nick_name
         data["email"] = self.user.email
         role_list = user_kind_role_service.get_user_roles(
             kind="team", kind_id=team.tenant_id, user=self.user)
         data["teams_identity"] = role_list["roles"]
         data["is_enterprise_admin"] = self.is_enterprise_admin
         if team.creater == self.user.user_id:
             is_team_owner = True
         data["is_team_owner"] = is_team_owner
         code = 200
         result = general_message(code,
                                  "user details query success.",
                                  "用户详情获取成功",
                                  bean=data)
         return Response(result, status=code)
     except UserNotExistError as e:
         logger.exception(e)
         code = 400
         result = general_message(code,
                                  "this user does not exist on this team.",
                                  "该用户不存在这个团队")
         return Response(result, status=code)
Example #10
0
 def __team_with_region_info(self, tenant, request_user=None):
     try:
         user = user_repo.get_user_by_user_id(tenant.creater)
         owner_name = user.get_name()
     except UserNotExistError:
         owner_name = None
     if request_user:
         user_role_list = user_kind_role_service.get_user_roles(
             kind="team", kind_id=tenant.tenant_id, user=request_user)
         roles = map(lambda x: x["role_name"], user_role_list["roles"])
         if tenant.creater == request_user.user_id:
             roles.append("owner")
     region_info_map = []
     region_list = team_repo.get_team_regions(tenant.tenant_id)
     if region_list:
         region_name_list = region_list.values_list("region_name",
                                                    flat=True)
         region_infos = region_repo.get_region_by_region_names(
             region_name_list)
         if region_infos:
             for region in region_infos:
                 region_info_map.append({
                     "region_name": region.region_name,
                     "region_alias": region.region_alias
                 })
     info = {
         "team_name": tenant.tenant_name,
         "team_alias": tenant.tenant_alias,
         "team_id": tenant.tenant_id,
         "create_time": tenant.create_time,
         "region": tenant.region,
         "region_list": region_info_map,
         "enterprise_id": tenant.enterprise_id,
         "owner": tenant.creater,
         "owner_name": owner_name,
     }
     if request_user:
         info["roles"] = roles
     return info
Example #11
0
 def get(self, request, enterprise_id, *args, **kwargs):
     code = 200
     new_join_team = []
     request_join_team = []
     try:
         tenants = enterprise_repo.get_enterprise_user_teams(enterprise_id, request.user.user_id)
         join_tenants = enterprise_repo.get_enterprise_user_join_teams(enterprise_id, request.user.user_id)
         active_tenants = enterprise_repo.get_enterprise_user_active_teams(enterprise_id, request.user.user_id)
         request_tenants = enterprise_repo.get_enterprise_user_request_join(enterprise_id, request.user.user_id)
         if tenants:
             for tenant in tenants[:3]:
                 region_name_list = []
                 region_name_list = team_repo.get_team_region_names(tenant.tenant_id)
                 user_role_list = user_kind_role_service.get_user_roles(
                     kind="team", kind_id=tenant.tenant_id, user=request.user)
                 roles = [x["role_name"] for x in user_role_list["roles"]]
                 if tenant.creater == request.user.user_id:
                     roles.append("owner")
                 owner = user_repo.get_by_user_id(tenant.creater)
                 if len(region_name_list) > 0:
                     team_item = {
                         "team_name": tenant.tenant_name,
                         "team_alias": tenant.tenant_alias,
                         "team_id": tenant.tenant_id,
                         "create_time": tenant.create_time,
                         "region": region_name_list[0],  # first region is default
                         "region_list": region_name_list,
                         "enterprise_id": tenant.enterprise_id,
                         "owner": tenant.creater,
                         "owner_name": (owner.get_name() if owner else None),
                         "roles": roles,
                         "is_pass": True,
                     }
                     new_join_team.append(team_item)
         if join_tenants:
             for tenant in join_tenants:
                 region_name_list = team_repo.get_team_region_names(tenant.team_id)
                 tenant_info = team_repo.get_team_by_team_id(tenant.team_id)
                 try:
                     user = user_repo.get_user_by_user_id(tenant_info.creater)
                     nick_name = user.nick_name
                 except UserNotExistError:
                     nick_name = None
                 if len(region_name_list) > 0:
                     team_item = {
                         "team_name": tenant.team_name,
                         "team_alias": tenant.team_alias,
                         "team_id": tenant.team_id,
                         "create_time": tenant_info.create_time,
                         "region": region_name_list[0],
                         "region_list": region_name_list,
                         "enterprise_id": tenant_info.enterprise_id,
                         "owner": tenant_info.creater,
                         "owner_name": nick_name,
                         "role": None,
                         "is_pass": tenant.is_pass,
                     }
                     new_join_team.append(team_item)
         if request_tenants:
             for request_tenant in request_tenants:
                 region_name_list = team_repo.get_team_region_names(request_tenant.team_id)
                 tenant_info = team_repo.get_team_by_team_id(request_tenant.team_id)
                 try:
                     user = user_repo.get_user_by_user_id(tenant_info.creater)
                     nick_name = user.nick_name
                 except UserNotExistError:
                     nick_name = None
                 if len(region_name_list) > 0:
                     team_item = {
                         "team_name": request_tenant.team_name,
                         "team_alias": request_tenant.team_alias,
                         "team_id": request_tenant.team_id,
                         "apply_time": request_tenant.apply_time,
                         "user_id": request_tenant.user_id,
                         "user_name": request_tenant.user_name,
                         "region": region_name_list[0],
                         "region_list": region_name_list,
                         "enterprise_id": enterprise_id,
                         "owner": tenant_info.creater,
                         "owner_name": nick_name,
                         "role": "viewer",
                         "is_pass": request_tenant.is_pass,
                     }
                     request_join_team.append(team_item)
         data = {
             "active_teams": active_tenants,
             "new_join_team": new_join_team,
             "request_join_team": request_join_team,
         }
         result = general_message(200, "success", None, bean=data)
     except Exception as e:
         logger.exception(e)
         code = 400
         result = general_message(code, "failed", "请求失败")
     return Response(result, status=code)