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
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)
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
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
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)
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
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)