Example #1
0
    def get_enterprise_user_active_teams(self, enterprise_id, user_id):
        tenants = self.get_enterprise_user_teams(enterprise_id, user_id)
        if not tenants:
            return None
        active_tenants_list = []
        for tenant in tenants:
            role = None
            owner = None
            try:
                owner = user_repo.get_user_by_user_id(tenant.creater)
                role = user_role_repo.get_role_names(user_id, tenant.tenant_id)
            except UserNotExistError:
                pass
            except UserRoleNotFoundException:
                if tenant.creater == user_id:
                    role = "owner"

            region_name_list = team_repo.get_team_region_names(
                tenant.tenant_id)
            if len(region_name_list) > 0:
                team_item = {
                    "tenant_id":
                    tenant.tenant_id,
                    "team_alias":
                    tenant.tenant_alias,
                    "owner":
                    tenant.creater,
                    "owner_name":
                    owner.get_name() if owner else "",
                    "enterprise_id":
                    tenant.enterprise_id,
                    "create_time":
                    tenant.create_time,
                    "team_name":
                    tenant.tenant_name,
                    "region":
                    region_name_list[0] if region_name_list else "",
                    "region_list":
                    region_name_list,
                    "num":
                    len(ServiceGroup.objects.filter(
                        tenant_id=tenant.tenant_id)),
                    "role":
                    role
                }
                if not team_item["region"] and len(region_name_list) > 0:
                    team_item["region"] = region_name_list[0]
                active_tenants_list.append(team_item)
        active_tenants_list.sort(key=lambda x: x["num"], reverse=True)
        active_tenants_list = active_tenants_list[:3]
        return active_tenants_list
    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 #3
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)