Merge pull request #7741 from swordqiu/hotfix/qj-search-project-domain-by-chsname

fix: search by chs projectname or domainname
This commit is contained in:
Zexi Li
2020-09-04 10:28:55 +08:00
committed by GitHub
3 changed files with 24 additions and 3 deletions
+8 -1
View File
@@ -106,9 +106,16 @@ func (manager *SDomainizedResourceBaseManager) ListItemFilter(
query apis.DomainizedResourceListInput,
) (*sqlchemy.SQuery, error) {
if len(query.ProjectDomainIds) > 0 {
// make sure ids are not utf8 string
idList := make([]string, 0)
for _, pid := range query.ProjectDomainIds {
if !stringutils2.IsUtf8(pid) {
idList = append(idList, pid)
}
}
tenants := TenantCacheManager.GetDomainQuery().SubQuery()
subq := tenants.Query(tenants.Field("id")).Filter(sqlchemy.OR(
sqlchemy.In(tenants.Field("id"), query.ProjectDomainIds),
sqlchemy.In(tenants.Field("id"), idList),
sqlchemy.In(tenants.Field("name"), query.ProjectDomainIds),
)).SubQuery()
q = q.In("domain_id", subq)
+8 -1
View File
@@ -101,9 +101,16 @@ func (manager *SProjectizedResourceBaseManager) ListItemFilter(
return nil, errors.Wrap(err, "SDomainizedResourceBaseManager.ListItemFilter")
}
if len(query.ProjectIds) > 0 {
// make sure ids are not utf8 string
idList := make([]string, 0)
for _, pid := range query.ProjectIds {
if !stringutils2.IsUtf8(pid) {
idList = append(idList, pid)
}
}
tenants := TenantCacheManager.GetTenantQuery().SubQuery()
subq := tenants.Query(tenants.Field("id")).Filter(sqlchemy.OR(
sqlchemy.In(tenants.Field("id"), query.ProjectIds),
sqlchemy.In(tenants.Field("id"), idList),
sqlchemy.In(tenants.Field("name"), query.ProjectIds),
)).SubQuery()
q = q.In("tenant_id", subq)
+8 -1
View File
@@ -132,9 +132,16 @@ func (manager *SIdentityBaseResourceManager) ListItemFilter(
}
// override manager.SDomainizedResourceBaseManager.ListItemFilter()
if len(query.ProjectDomainIds) > 0 {
// make sure ids are not utf8 string
idList := make([]string, 0)
for _, pid := range query.ProjectDomainIds {
if !stringutils2.IsUtf8(pid) {
idList = append(idList, pid)
}
}
domains := DomainManager.Query().SubQuery()
subq := domains.Query(domains.Field("id")).Filter(sqlchemy.OR(
sqlchemy.In(domains.Field("id"), query.ProjectDomainIds),
sqlchemy.In(domains.Field("id"), idList),
sqlchemy.In(domains.Field("name"), query.ProjectDomainIds),
))
q = q.In("domain_id", subq.SubQuery())