From d8887266ae4f3fd15cddd8d4b77673c9a07c9e5d Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Mon, 19 Oct 2020 15:59:23 +0800 Subject: [PATCH 1/5] logger: actionlog: readability change --- pkg/logger/models/actionlog.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/logger/models/actionlog.go b/pkg/logger/models/actionlog.go index 86bd5aa58b..55fb0fffc3 100644 --- a/pkg/logger/models/actionlog.go +++ b/pkg/logger/models/actionlog.go @@ -76,7 +76,8 @@ func (action *SActionlog) CustomizeCreate(ctx context.Context, userCred mcclient func (action *SActionlog) GetI18N(ctx context.Context) *jsonutils.JSONDict { r := jsonutils.NewDict() - r.Set("action", jsonutils.NewString(logclient.OpsActionI18nTable.Lookup(ctx, action.Action))) + act18 := logclient.OpsActionI18nTable.Lookup(ctx, action.Action) + r.Set("action", jsonutils.NewString(act18)) return r } From d6243fbc6ac646cf4ef0c5d3389cf86a7907a2f9 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Mon, 19 Oct 2020 16:01:25 +0800 Subject: [PATCH 2/5] cloudcommon: db: modelbase: distinct-field: readability change --- pkg/cloudcommon/db/modelbase.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/cloudcommon/db/modelbase.go b/pkg/cloudcommon/db/modelbase.go index 75cd5f17eb..b4b6c52aff 100644 --- a/pkg/cloudcommon/db/modelbase.go +++ b/pkg/cloudcommon/db/modelbase.go @@ -359,14 +359,15 @@ func (manager *SModelBaseManager) GetPropertyDistinctField(ctx context.Context, } } - var res = jsonutils.NewDict() q := im.Query() q, err = ListItemQueryFilters(im, ctx, q, userCred, query, policy.PolicyActionList) if err != nil { return nil, err } - var backupQuery = *q - + var ( + backupQuery = *q + res = jsonutils.NewDict() + ) // query field for i := 0; i < len(fields); i++ { var nq = backupQuery From d639b0a84ca98837ccdc0d41dde3eeaf5532c39a Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Mon, 19 Oct 2020 16:01:07 +0800 Subject: [PATCH 3/5] cloudcommon: db: add man.GetI18N --- pkg/cloudcommon/db/interface.go | 2 ++ pkg/cloudcommon/db/modelbase.go | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/pkg/cloudcommon/db/interface.go b/pkg/cloudcommon/db/interface.go index 93fe02d8a4..b9a169befa 100644 --- a/pkg/cloudcommon/db/interface.go +++ b/pkg/cloudcommon/db/interface.go @@ -127,6 +127,8 @@ type IModelManager interface { QueryDistinctExtraField(q *sqlchemy.SQuery, field string) (*sqlchemy.SQuery, error) GetPagingConfig() *SPagingConfig + + GetI18N(ctx context.Context, idstr string, resObj jsonutils.JSONObject) *jsonutils.JSONDict } type IModel interface { diff --git a/pkg/cloudcommon/db/modelbase.go b/pkg/cloudcommon/db/modelbase.go index b4b6c52aff..010a5c5631 100644 --- a/pkg/cloudcommon/db/modelbase.go +++ b/pkg/cloudcommon/db/modelbase.go @@ -425,6 +425,10 @@ func (manager *SModelBaseManager) OnCreateFailed(ctx context.Context, userCred m return nil } +func (manager *SModelBaseManager) GetI18N(ctx context.Context, idstr string, resObj jsonutils.JSONObject) *jsonutils.JSONDict { + return nil +} + func (model *SModelBase) GetId() string { return "" } From c1468105f8d8bf9dfbf37f2dca6b2913e5523068 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Mon, 19 Oct 2020 16:17:10 +0800 Subject: [PATCH 4/5] cloudcommon: db: GET: i18n for result of get property calls --- pkg/cloudcommon/db/db_dispatcher.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/cloudcommon/db/db_dispatcher.go b/pkg/cloudcommon/db/db_dispatcher.go index a085b9cc0a..40ce99439c 100644 --- a/pkg/cloudcommon/db/db_dispatcher.go +++ b/pkg/cloudcommon/db/db_dispatcher.go @@ -928,6 +928,12 @@ func (dispatcher *DBModelDispatcher) Get(ctx context.Context, idStr string, quer if err != nil { return nil, err } else if data != nil { + if dataDict, ok := data.(*jsonutils.JSONDict); ok { + i18nDict := dispatcher.modelManager.GetI18N(ctx, idStr, data) + if i18nDict != nil { + dataDict.Set("_i18n", i18nDict) + } + } return data, nil } From e4cef880a3b70fca74ab37fa6db9c9347255fc25 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Mon, 19 Oct 2020 16:01:59 +0800 Subject: [PATCH 5/5] logger: actionlog: i18n for distinct-field --- pkg/logger/models/actionlog.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pkg/logger/models/actionlog.go b/pkg/logger/models/actionlog.go index 55fb0fffc3..fa60126ba8 100644 --- a/pkg/logger/models/actionlog.go +++ b/pkg/logger/models/actionlog.go @@ -81,6 +81,25 @@ func (action *SActionlog) GetI18N(ctx context.Context) *jsonutils.JSONDict { return r } +func (man *SActionlogManager) GetI18N(ctx context.Context, idstr string, resObj jsonutils.JSONObject) *jsonutils.JSONDict { + if idstr != "distinct-field" { + return nil + } + res := &struct { + Action []string `json:"action"` + }{} + if err := resObj.Unmarshal(res); err != nil { + return nil + } + for i, act := range res.Action { + act18 := logclient.OpsActionI18nTable.Lookup(ctx, act) + res.Action[i] = act18 + } + robj := jsonutils.Marshal(res) + rdict := robj.(*jsonutils.JSONDict) + return rdict +} + // Websockets 不再拉取 ActionLog 的消息,因此注释掉如下代码 // 可以保留,以便有需求时,再次打开 // func (manager *SActionlogManager) OnCreateComplete(ctx context.Context, items []db.IModel, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) {