From e1a4833ba1088dcd3cce041934cd87a9261851a9 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Tue, 21 Dec 2021 11:01:17 +0800 Subject: [PATCH 01/46] #981 1. submit tag 2. query tag repo list --- models/error.go | 13 +++++ models/models.go | 2 + models/repo_tag.go | 107 +++++++++++++++++++++++++++++++++++++++ modules/auth/org.go | 4 ++ routers/org/tag.go | 98 +++++++++++++++++++++++++++++++++++ routers/routes/routes.go | 4 ++ 6 files changed, 228 insertions(+) create mode 100644 models/repo_tag.go create mode 100644 routers/org/tag.go diff --git a/models/error.go b/models/error.go index 9d1c68658..46917e15e 100755 --- a/models/error.go +++ b/models/error.go @@ -1999,3 +1999,16 @@ func IsErrJobNotExist(err error) bool { func (err ErrJobNotExist) Error() string { return fmt.Sprintf("the job does not exist") } + +type ErrTagNotExist struct { + TagID int64 +} + +func (err ErrTagNotExist) Error() string { + return fmt.Sprintf("the tag does not exist") +} + +func IsErrTagNotExist(err error) bool { + _, ok := err.(ErrTagNotExist) + return ok +} diff --git a/models/models.go b/models/models.go index e8a71bbd8..a72ebe5db 100755 --- a/models/models.go +++ b/models/models.go @@ -134,6 +134,8 @@ func init() { new(BlockChain), new(RecommendOrg), new(AiModelManage), + new(OfficialTag), + new(OfficialTagRepos), ) tablesStatistic = append(tablesStatistic, diff --git a/models/repo_tag.go b/models/repo_tag.go new file mode 100644 index 000000000..6f3cc510f --- /dev/null +++ b/models/repo_tag.go @@ -0,0 +1,107 @@ +package models + +import ( + "code.gitea.io/gitea/modules/timeutil" + "fmt" +) + +const DefaultOrgTagLimit = -1 + +type OfficialTag struct { + ID int64 `xorm:"pk autoincr"` + Name string `xorm:"NOT NULL"` + Limit int `xorm:"NOT NULL default(-1)"` + CreatedUnix timeutil.TimeStamp `xorm:"created"` + UpdatedUnix timeutil.TimeStamp `xorm:"updated"` +} + +type OfficialTagRepos struct { + ID int64 `xorm:"pk autoincr"` + OrgID int64 `xorm:"NOT NULL INDEX"` + TagID int64 `xorm:"NOT NULL"` + RepoID int64 `xorm:"NOT NULL INDEX"` + CreatedUnix timeutil.TimeStamp `xorm:"created"` + UpdatedUnix timeutil.TimeStamp `xorm:"updated"` +} + +type TagReposBrief struct { + RepoID int64 + RepoName string + TagID int64 +} + +type TagReposSelected struct { + RepoID int64 + RepoName string + Selected bool +} + +func GetTagByID(id int64) (*OfficialTag, error) { + r := &OfficialTag{ + ID: id, + } + has, err := x.Get(r) + if err != nil { + return nil, err + } else if !has { + return nil, ErrTagNotExist{0} + } + return r, nil +} + +func UpdateTagReposByID(tagID, orgID int64, repoIdList []int64) error { + sess := x.NewSession() + defer sess.Close() + + if err := sess.Begin(); err != nil { + return fmt.Errorf("UpdateTagReposByID[tagId: %d, orgID: %d,error:%v", tagID, orgID, err) + } + //delete old tag repos + r := &OfficialTagRepos{ + TagID: tagID, + OrgID: orgID, + } + _, err := sess.Delete(r) + if err != nil { + return err + } + + //add new tag repos + data := make([]*OfficialTagRepos, 0) + for _, repoId := range repoIdList { + data = append(data, &OfficialTagRepos{ + OrgID: orgID, + TagID: tagID, + RepoID: repoId, + }) + } + _, err = sess.Insert(&data) + if err != nil { + sess.Rollback() + return err + } + return sess.Commit() +} + +func GetTagRepos(tagID, orgID int64) ([]TagReposSelected, error) { + + t := make([]TagReposBrief, 0) + const SQLCmd = "select t1.id as repo_id,t1.name as repo_name,t2.id as tag_id from repository t1 left join official_tag_repos t2 on (t1.id = t2.repo_id and t2.tag_id = ?) where t1.owner_id = ? and t1.is_private = false" + + if err := x.SQL(SQLCmd, tagID, orgID).Find(&t); err != nil { + return nil, err + } + r := make([]TagReposSelected, 0) + for _, v := range t { + selected := false + if v.TagID > 0 { + selected = true + } + r = append(r, TagReposSelected{ + RepoID: v.RepoID, + RepoName: v.RepoName, + Selected: selected, + }) + } + return r, nil +} diff --git a/modules/auth/org.go b/modules/auth/org.go index 20e2b0999..9642e1ce6 100644 --- a/modules/auth/org.go +++ b/modules/auth/org.go @@ -70,3 +70,7 @@ type CreateTeamForm struct { func (f *CreateTeamForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { return validate(errs, ctx.Data, f, ctx.Locale) } + +type SubmitReposOfTagForm struct { + RepoList []int64 +} diff --git a/routers/org/tag.go b/routers/org/tag.go new file mode 100644 index 000000000..650d4690c --- /dev/null +++ b/routers/org/tag.go @@ -0,0 +1,98 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Copyright 2020 The Gitea Authors. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package org + +import ( + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/auth" + "code.gitea.io/gitea/modules/context" + "errors" + "strconv" +) + +// SubmitTags submit repos of org tag +func SubmitTags(ctx *context.Context, form auth.SubmitReposOfTagForm) { + org, tag := getOrgAndTagFromContext(ctx) + if ctx.Written() { + return + } + + err := models.UpdateTagReposByID(tag.ID, org.ID, form.RepoList) + if err != nil { + ctx.ServerError("UpdateTagReposByID", err) + return + } + + ctx.JSON(200, map[string]interface{}{ + "code": "00", + "msg": "success", + }) +} + +// GetTagRepos get repos under org tag +func GetTagRepos(ctx *context.Context) { + org, tag := getOrgAndTagFromContext(ctx) + if ctx.Written() { + return + } + + r, err := models.GetTagRepos(tag.ID, org.ID) + if err != nil { + ctx.ServerError("GetTagRepos", err) + return + } + + ctx.JSON(200, map[string]interface{}{ + "code": "00", + "msg": "success", + "data": r, + }) +} + +// getDashboardContextUser finds out dashboard is viewing as which context user. +func getOrgAndTagFromContext(ctx *context.Context) (*models.User, *models.OfficialTag) { + + var org *models.User + var tag *models.OfficialTag + var err error + + orgName := ctx.Params(":org") + + if len(orgName) > 0 { + // Organization. + org, err = models.GetUserByName(orgName) + if err != nil { + if models.IsErrUserNotExist(err) { + ctx.NotFound("GetUserByName", err) + } else { + ctx.ServerError("GetUserByName", err) + } + return nil, nil + } + if !org.IsOrganization() { + ctx.ServerError("GetUserByName", errors.New("it is not an organization")) + return nil, nil + } + } + + tagIdStr := ctx.Query("tagId") + if len(tagIdStr) == 0 { + ctx.ServerError("GetTagInfo", errors.New("tag is not exist")) + return nil, nil + } + tagId, _ := strconv.ParseInt(tagIdStr, 10, 32) + tag, err = models.GetTagByID(tagId) + if err != nil { + if models.IsErrTagNotExist(err) { + ctx.NotFound("GetTagInfo", err) + } else { + ctx.ServerError("GetTagInfo", err) + } + return nil, nil + } + + return org, tag +} diff --git a/routers/routes/routes.go b/routers/routes/routes.go index cfd962603..c3a8b4abd 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -627,6 +627,10 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/org", func() { m.Group("/:org", func() { m.Get("/members", org.Members) + m.Group("/org_tag", func() { + m.Get("/repo_list", org.GetTagRepos) + m.Post("/repo_submit", bindIgnErr(auth.SubmitReposOfTagForm{}), org.SubmitTags) + }) }, context.OrgAssignment()) }) m.Group("/org", func() { From 74c9595aac9011cd5c115f22a4709527b92a0b83 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Tue, 21 Dec 2021 14:33:11 +0800 Subject: [PATCH 02/46] #981 add tag in org index --- models/repo_tag.go | 48 ++++++++++++++++++++++++++++++++++++++++++++- routers/org/home.go | 8 ++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/models/repo_tag.go b/models/repo_tag.go index 6f3cc510f..579a6cf5f 100644 --- a/models/repo_tag.go +++ b/models/repo_tag.go @@ -36,6 +36,24 @@ type TagReposSelected struct { Selected bool } +type TagsDetail struct { + TagId int64 + TagName string + RepoList []RepositoryForTag +} + +type RepositoryForTag struct { + TagId int64 + TagName string + ID int64 + Name string + Description string + NumWatches int + NumStars int + NumForks int + Topics []string +} + func GetTagByID(id int64) (*OfficialTag, error) { r := &OfficialTag{ ID: id, @@ -84,7 +102,6 @@ func UpdateTagReposByID(tagID, orgID int64, repoIdList []int64) error { } func GetTagRepos(tagID, orgID int64) ([]TagReposSelected, error) { - t := make([]TagReposBrief, 0) const SQLCmd = "select t1.id as repo_id,t1.name as repo_name,t2.id as tag_id from repository t1 left join official_tag_repos t2 on (t1.id = t2.repo_id and t2.tag_id = ?) where t1.owner_id = ? and t1.is_private = false" @@ -105,3 +122,32 @@ func GetTagRepos(tagID, orgID int64) ([]TagReposSelected, error) { } return r, nil } + +func GetTagsDetails(orgID int64) ([]TagsDetail, error) { + t := make([]RepositoryForTag, 0) + const SQLCmd = "select t1.tag_id ,t3.name as tag_name,t2.* from official_tag_repos t1 inner join repository t2 on t1.repo_id = t2.id inner join official_tag t3 on t1.tag_id = t3.id where t1.org_id = ?" + + if err := x.SQL(SQLCmd, orgID).Find(&t); err != nil { + return nil, err + } + r := make([]TagsDetail, 0) + tempMap := make(map[int64]TagsDetail, 0) + for _, v := range t { + tagId := v.TagId + detail, ok := tempMap[tagId] + if !ok { + detail = TagsDetail{ + TagId: v.TagId, + TagName: v.TagName, + RepoList: make([]RepositoryForTag, 0), + } + } + detail.RepoList = append(detail.RepoList, v) + tempMap[tagId] = detail + } + + for _, v := range tempMap { + r = append(r, v) + } + return r, nil +} diff --git a/routers/org/home.go b/routers/org/home.go index b11c179c1..1a80f001f 100755 --- a/routers/org/home.go +++ b/routers/org/home.go @@ -130,5 +130,13 @@ func Home(ctx *context.Context) { pager.SetDefaultParams(ctx) ctx.Data["Page"] = pager + //find org tag info + tags, err := models.GetTagsDetails(org.ID) + if err != nil { + ctx.ServerError("GetTagsDetails", err) + return + } + + ctx.Data["tags"] = tags ctx.HTML(200, tplOrgHome) } From 535835416b52439e50076f788452923c38d3115b Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Tue, 21 Dec 2021 15:08:28 +0800 Subject: [PATCH 03/46] #981 add sql --- models/migrations/migrations.go | 2 ++ models/migrations/v140.go | 31 +++++++++++++++++++++++++++++++ models/repo_tag.go | 1 + 3 files changed, 34 insertions(+) create mode 100644 models/migrations/v140.go diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index 00d84da2e..e134a875e 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -212,6 +212,8 @@ var migrations = []Migration{ NewMigration("Add ResolveDoerID to Comment table", addResolveDoerIDCommentColumn), // v139 -> v140 NewMigration("prepend refs/heads/ to issue refs", prependRefsHeadsToIssueRefs), + // v140 -> v141 + NewMigration("init selected tag", initSelectedTag), } // GetCurrentDBVersion returns the current db version diff --git a/models/migrations/v140.go b/models/migrations/v140.go new file mode 100644 index 000000000..5684dba44 --- /dev/null +++ b/models/migrations/v140.go @@ -0,0 +1,31 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package migrations + +import ( + "code.gitea.io/gitea/models" + "xorm.io/xorm" +) + +func initSelectedTag(x *xorm.Engine) error { + p := &models.OfficialTag{ + Code: "Selected", + } + + ok, err := x.Get(p) + + if ok { + return nil + } + + t := &models.OfficialTag{ + ID: 1, + Code: "Selected", + Name: "精选项目", + Limit: 9, + } + _, err = x.Insert(t) + return err +} diff --git a/models/repo_tag.go b/models/repo_tag.go index 579a6cf5f..21e742082 100644 --- a/models/repo_tag.go +++ b/models/repo_tag.go @@ -10,6 +10,7 @@ const DefaultOrgTagLimit = -1 type OfficialTag struct { ID int64 `xorm:"pk autoincr"` Name string `xorm:"NOT NULL"` + Code string `xorm:"NOT NULL"` Limit int `xorm:"NOT NULL default(-1)"` CreatedUnix timeutil.TimeStamp `xorm:"created"` UpdatedUnix timeutil.TimeStamp `xorm:"updated"` From 35fbd89eba87c547ca0f70a19c89e39d1335a091 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Tue, 21 Dec 2021 15:15:04 +0800 Subject: [PATCH 04/46] #981 delete sql --- models/migrations/migrations.go | 2 -- models/migrations/v140.go | 31 ------------------------------- 2 files changed, 33 deletions(-) delete mode 100644 models/migrations/v140.go diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index e134a875e..00d84da2e 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -212,8 +212,6 @@ var migrations = []Migration{ NewMigration("Add ResolveDoerID to Comment table", addResolveDoerIDCommentColumn), // v139 -> v140 NewMigration("prepend refs/heads/ to issue refs", prependRefsHeadsToIssueRefs), - // v140 -> v141 - NewMigration("init selected tag", initSelectedTag), } // GetCurrentDBVersion returns the current db version diff --git a/models/migrations/v140.go b/models/migrations/v140.go deleted file mode 100644 index 5684dba44..000000000 --- a/models/migrations/v140.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package migrations - -import ( - "code.gitea.io/gitea/models" - "xorm.io/xorm" -) - -func initSelectedTag(x *xorm.Engine) error { - p := &models.OfficialTag{ - Code: "Selected", - } - - ok, err := x.Get(p) - - if ok { - return nil - } - - t := &models.OfficialTag{ - ID: 1, - Code: "Selected", - Name: "精选项目", - Limit: 9, - } - _, err = x.Insert(t) - return err -} From 7e3f0d7994c392860087b3f550188bca755f7e9c Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Wed, 22 Dec 2021 10:55:42 +0800 Subject: [PATCH 05/46] #981 update --- models/repo_tag.go | 102 ++++++++++++++++++++++++++++++-------------- routers/org/home.go | 4 +- 2 files changed, 72 insertions(+), 34 deletions(-) diff --git a/models/repo_tag.go b/models/repo_tag.go index 21e742082..7abe0f1e7 100644 --- a/models/repo_tag.go +++ b/models/repo_tag.go @@ -1,6 +1,7 @@ package models import ( + "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/timeutil" "fmt" ) @@ -12,6 +13,7 @@ type OfficialTag struct { Name string `xorm:"NOT NULL"` Code string `xorm:"NOT NULL"` Limit int `xorm:"NOT NULL default(-1)"` + Status int `xorm:"NOT NULL default(0)"` CreatedUnix timeutil.TimeStamp `xorm:"created"` UpdatedUnix timeutil.TimeStamp `xorm:"updated"` } @@ -40,21 +42,41 @@ type TagReposSelected struct { type TagsDetail struct { TagId int64 TagName string - RepoList []RepositoryForTag + TagLimit int + RepoList []Repository } type RepositoryForTag struct { - TagId int64 - TagName string - ID int64 - Name string - Description string - NumWatches int - NumStars int - NumForks int - Topics []string + TagId int64 + TagName string + Repo Repository } +// +//type RepositoryForTag struct { +// TagId int64 +// TagName string +// ID int64 +// Name string +// Description string +// NumWatches int +// NumStars int +// NumForks int +// Topics []string +// Link string +// OwnerName string +//} + +//// Link returns the repository link +//func (repo *RepositoryForTag) FullPath() string { +// return setting.AppSubURL + "/" + repo.FullName() +//} +// +//// FullName returns the repository full name +//func (repo *RepositoryForTag) FullName() string { +// return repo.OwnerName + "/" + repo.Name +//} + func GetTagByID(id int64) (*OfficialTag, error) { r := &OfficialTag{ ID: id, @@ -104,7 +126,7 @@ func UpdateTagReposByID(tagID, orgID int64, repoIdList []int64) error { func GetTagRepos(tagID, orgID int64) ([]TagReposSelected, error) { t := make([]TagReposBrief, 0) - const SQLCmd = "select t1.id as repo_id,t1.name as repo_name,t2.id as tag_id from repository t1 left join official_tag_repos t2 on (t1.id = t2.repo_id and t2.tag_id = ?) where t1.owner_id = ? and t1.is_private = false" + const SQLCmd = "select t1.id as repo_id,t1.name as repo_name,t2.id as tag_id from repository t1 left join official_tag_repos t2 on (t1.id = t2.repo_id and t2.tag_id = ?) where t1.owner_id = ? and t1.is_private = false order by t1.updated_unix desc" if err := x.SQL(SQLCmd, tagID, orgID).Find(&t); err != nil { return nil, err @@ -124,31 +146,47 @@ func GetTagRepos(tagID, orgID int64) ([]TagReposSelected, error) { return r, nil } -func GetTagsDetails(orgID int64) ([]TagsDetail, error) { - t := make([]RepositoryForTag, 0) - const SQLCmd = "select t1.tag_id ,t3.name as tag_name,t2.* from official_tag_repos t1 inner join repository t2 on t1.repo_id = t2.id inner join official_tag t3 on t1.tag_id = t3.id where t1.org_id = ?" - - if err := x.SQL(SQLCmd, orgID).Find(&t); err != nil { +func GetAllOfficialTagRepos(orgID int64, isOwner bool) ([]TagsDetail, error) { + result := make([]TagsDetail, 0) + tags, err := GetAllOfficialTags() + if err != nil { return nil, err } - r := make([]TagsDetail, 0) - tempMap := make(map[int64]TagsDetail, 0) - for _, v := range t { - tagId := v.TagId - detail, ok := tempMap[tagId] - if !ok { - detail = TagsDetail{ - TagId: v.TagId, - TagName: v.TagName, - RepoList: make([]RepositoryForTag, 0), - } + for _, tag := range tags { + repos, err := GetOfficialTagDetail(orgID, tag.ID) + if err != nil { + return nil, err } - detail.RepoList = append(detail.RepoList, v) - tempMap[tagId] = detail + if len(repos) == 0 && !isOwner { + continue + } + result = append(result, TagsDetail{ + TagId: tag.ID, + TagName: tag.Name, + TagLimit: tag.Limit, + RepoList: repos, + }) } + return result, nil +} + +func GetOfficialTagDetail(orgID, tagId int64) ([]Repository, error) { + t := make([]Repository, 0) + const SQLCmd = "select t2.* from official_tag_repos t1 inner join repository t2 on t1.repo_id = t2.id where t1.org_id = ? and t1.tag_id=? order by t2.updated_unix desc" - for _, v := range tempMap { - r = append(r, v) + if err := x.SQL(SQLCmd, orgID, tagId).Find(&t); err != nil { + return nil, err } - return r, nil + return t, nil +} + +func GetAllOfficialTags() ([]OfficialTag, error) { + //todo redis? + o := make([]OfficialTag, 0) + err := x.Where("status = ?", 0).Find(&o) + if err != nil { + log.Error("GetAllOfficialTags error,%v", err) + return nil, err + } + return o, nil } diff --git a/routers/org/home.go b/routers/org/home.go index 1a80f001f..df600d96d 100755 --- a/routers/org/home.go +++ b/routers/org/home.go @@ -131,9 +131,9 @@ func Home(ctx *context.Context) { ctx.Data["Page"] = pager //find org tag info - tags, err := models.GetTagsDetails(org.ID) + tags, err := models.GetAllOfficialTagRepos(org.ID, ctx.Org.IsOwner) if err != nil { - ctx.ServerError("GetTagsDetails", err) + ctx.ServerError("GetAllOfficialTagRepos", err) return } From e6bda98499c61b4f6c795b2afae82a795177f999 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Wed, 22 Dec 2021 10:56:57 +0800 Subject: [PATCH 06/46] #981 update --- models/repo_tag.go | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/models/repo_tag.go b/models/repo_tag.go index 7abe0f1e7..ceac2850e 100644 --- a/models/repo_tag.go +++ b/models/repo_tag.go @@ -46,37 +46,6 @@ type TagsDetail struct { RepoList []Repository } -type RepositoryForTag struct { - TagId int64 - TagName string - Repo Repository -} - -// -//type RepositoryForTag struct { -// TagId int64 -// TagName string -// ID int64 -// Name string -// Description string -// NumWatches int -// NumStars int -// NumForks int -// Topics []string -// Link string -// OwnerName string -//} - -//// Link returns the repository link -//func (repo *RepositoryForTag) FullPath() string { -// return setting.AppSubURL + "/" + repo.FullName() -//} -// -//// FullName returns the repository full name -//func (repo *RepositoryForTag) FullName() string { -// return repo.OwnerName + "/" + repo.Name -//} - func GetTagByID(id int64) (*OfficialTag, error) { r := &OfficialTag{ ID: id, From 74508e08209590f4d596b19068a1b2ee27030bb2 Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 23 Dec 2021 14:51:57 +0800 Subject: [PATCH 07/46] =?UTF-8?q?=E6=8C=89=E7=85=A7=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=E9=87=8F=E7=BB=9F=E8=AE=A1=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/repository/elk_pagedata.go | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/modules/repository/elk_pagedata.go b/modules/repository/elk_pagedata.go index 1454f0364..ecdbff078 100644 --- a/modules/repository/elk_pagedata.go +++ b/modules/repository/elk_pagedata.go @@ -21,7 +21,8 @@ type Fields struct { Format string `json:"format"` } type MatchPhrase struct { - Message string `json:"message"` + Message string `json:"message,omitempty"` + TagName string `json:"tagName.keyword,omitempty"` } type Should struct { MatchPhrase MatchPhrase `json:"match_phrase"` @@ -144,7 +145,7 @@ func ProjectViewInit(User string, Project string, Gte string, Lte string) (proje inputStruct.Batch[0].Request.Params.Body.Fields = make([]Fields, 1) inputStruct.Batch[0].Request.Params.Body.Fields[0].Field = setting.TimeField inputStruct.Batch[0].Request.Params.Body.Fields[0].Format = setting.ElkTimeFormat - inputStruct.Batch[0].Request.Params.Body.Query.BoolIn.Filter = make([]Filter, 3) + inputStruct.Batch[0].Request.Params.Body.Query.BoolIn.Filter = make([]Filter, 4) //限定查询时间 var timeRange Range timeRange.Timestamptest.Gte = Gte @@ -159,6 +160,24 @@ func ProjectViewInit(User string, Project string, Gte string, Lte string) (proje var projectName FilterMatchPhrase projectName.ProjectName = Project inputStruct.Batch[0].Request.Params.Body.Query.BoolIn.Filter[2].FilterMatchPhrase = &projectName + //限定页面 + var bool Bool + bool.Should = make([]Should, 14) + bool.Should[0].MatchPhrase.TagName = "%{[request][3]}" + bool.Should[1].MatchPhrase.TagName = "datasets?type=0" + bool.Should[2].MatchPhrase.TagName = "datasets?type=1" + bool.Should[3].MatchPhrase.TagName = "issues" + bool.Should[4].MatchPhrase.TagName = "labels" + bool.Should[5].MatchPhrase.TagName = "pulls" + bool.Should[6].MatchPhrase.TagName = "wiki" + bool.Should[7].MatchPhrase.TagName = "activity" + bool.Should[8].MatchPhrase.TagName = "cloudbrain" + bool.Should[9].MatchPhrase.TagName = "modelarts" + bool.Should[10].MatchPhrase.TagName = "blockchain" + bool.Should[11].MatchPhrase.TagName = "watchers" + bool.Should[12].MatchPhrase.TagName = "stars" + bool.Should[13].MatchPhrase.TagName = "forks" + inputStruct.Batch[0].Request.Params.Body.Query.BoolIn.Filter[3].Bool = &bool return inputStruct } From 3407f0b2bc74abbcfce7939a1b89e2c51fc5dc4f Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 23 Dec 2021 15:24:33 +0800 Subject: [PATCH 08/46] =?UTF-8?q?=E8=AE=AD=E7=BB=83=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E6=95=B0=E6=8D=AE=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/attachment.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/attachment.go b/models/attachment.go index d217a61a4..2b3c1fd65 100755 --- a/models/attachment.go +++ b/models/attachment.go @@ -429,7 +429,7 @@ func GetAllUserAttachments(userID int64) ([]*AttachmentUsername, error) { func getModelArtsUserAttachments(e Engine, userID int64) ([]*AttachmentUsername, error) { attachments := make([]*AttachmentUsername, 0, 10) if err := e.Table("attachment").Join("LEFT", "`user`", "attachment.uploader_id "+ - "= `user`.id").Where("attachment.type = ? and (uploader_id= ? or is_private = ?)", TypeCloudBrainTwo, userID, false).Find(&attachments); err != nil { + "= `user`.id").Where("attachment.type = ? and (uploader_id= ? or is_private = ?) and attachment.decompress_state = ?", TypeCloudBrainTwo, userID, false, DecompressStateDone).Find(&attachments); err != nil { return nil, err } return attachments, nil From f8b07c88139bc8d8ad0e5bd22fad22e3ccc65b70 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Thu, 23 Dec 2021 15:30:47 +0800 Subject: [PATCH 09/46] compute-resource --- modules/modelarts/modelarts.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index 6a792d42d..06eac1665 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -48,8 +48,8 @@ const ( PerPage = 10 IsLatestVersion = "1" NotLatestVersion = "0" - DebugType = -1 - VersionCount = 1 + DebugType = -1 + VersionCount = 1 SortByCreateTime = "create_time" ConfigTypeCustom = "custom" @@ -211,14 +211,15 @@ func GenerateTask(ctx *context.Context, jobName, uuid, description, flavor strin } err = models.CreateCloudbrain(&models.Cloudbrain{ - Status: string(models.JobWaiting), - UserID: ctx.User.ID, - RepoID: ctx.Repo.Repository.ID, - JobID: jobResult.ID, - JobName: jobName, - JobType: string(models.JobTypeDebug), - Type: models.TypeCloudBrainTwo, - Uuid: uuid, + Status: string(models.JobWaiting), + UserID: ctx.User.ID, + RepoID: ctx.Repo.Repository.ID, + JobID: jobResult.ID, + JobName: jobName, + JobType: string(models.JobTypeDebug), + Type: models.TypeCloudBrainTwo, + Uuid: uuid, + ComputeResource: models.NPUResource, }) if err != nil { From e95597f30bbb0b458321fb37db37305be71bb688 Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 23 Dec 2021 18:11:02 +0800 Subject: [PATCH 10/46] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=8F=AA=E9=99=90=E5=88=B6=E8=AE=AD=E7=BB=83=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/attachment.go | 15 ++++++++++++++- routers/repo/modelarts.go | 10 +++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/models/attachment.go b/models/attachment.go index 2b3c1fd65..fd1df9e43 100755 --- a/models/attachment.go +++ b/models/attachment.go @@ -429,7 +429,7 @@ func GetAllUserAttachments(userID int64) ([]*AttachmentUsername, error) { func getModelArtsUserAttachments(e Engine, userID int64) ([]*AttachmentUsername, error) { attachments := make([]*AttachmentUsername, 0, 10) if err := e.Table("attachment").Join("LEFT", "`user`", "attachment.uploader_id "+ - "= `user`.id").Where("attachment.type = ? and (uploader_id= ? or is_private = ?) and attachment.decompress_state = ?", TypeCloudBrainTwo, userID, false, DecompressStateDone).Find(&attachments); err != nil { + "= `user`.id").Where("attachment.type = ? and (uploader_id= ? or is_private = ?)", TypeCloudBrainTwo, userID, false).Find(&attachments); err != nil { return nil, err } return attachments, nil @@ -439,6 +439,19 @@ func GetModelArtsUserAttachments(userID int64) ([]*AttachmentUsername, error) { return getModelArtsUserAttachments(x, userID) } +func getModelArtsTrainAttachments(e Engine, userID int64) ([]*AttachmentUsername, error) { + attachments := make([]*AttachmentUsername, 0, 10) + if err := e.Table("attachment").Join("LEFT", "`user`", "attachment.uploader_id "+ + "= `user`.id").Where("attachment.type = ? and (uploader_id= ? or is_private = ?) and attachment.decompress_state = ?", TypeCloudBrainTwo, userID, false, DecompressStateDone).Find(&attachments); err != nil { + return nil, err + } + return attachments, nil +} + +func GetModelArtsTrainAttachments(userID int64) ([]*AttachmentUsername, error) { + return getModelArtsTrainAttachments(x, userID) +} + func CanDelAttachment(isSigned bool, user *User, attach *Attachment) bool { if !isSigned { return false diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index f916fc157..37540c3c0 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -320,7 +320,7 @@ func NotebookDel(ctx *context.Context) { return } - if task.Status != string(models.ModelArtsCreateFailed) && task.Status != string(models.ModelArtsStartFailed) && task.Status != string(models.ModelArtsStopped){ + if task.Status != string(models.ModelArtsCreateFailed) && task.Status != string(models.ModelArtsStartFailed) && task.Status != string(models.ModelArtsStopped) { log.Error("the job(%s) has not been stopped", task.JobName) ctx.ServerError("the job has not been stopped", errors.New("the job has not been stopped")) return @@ -411,7 +411,7 @@ func trainJobNewDataPrepare(ctx *context.Context) error { var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] ctx.Data["job_name"] = jobName - attachs, err := models.GetModelArtsUserAttachments(ctx.User.ID) + attachs, err := models.GetModelArtsTrainAttachments(ctx.User.ID) if err != nil { ctx.ServerError("GetAllUserAttachments failed:", err) return err @@ -480,7 +480,7 @@ func trainJobErrorNewDataPrepare(ctx *context.Context, form auth.CreateModelArts var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] ctx.Data["job_name"] = jobName - attachs, err := models.GetModelArtsUserAttachments(ctx.User.ID) + attachs, err := models.GetModelArtsTrainAttachments(ctx.User.ID) if err != nil { ctx.ServerError("GetAllUserAttachments failed:", err) return err @@ -568,7 +568,7 @@ func trainJobNewVersionDataPrepare(ctx *context.Context) error { var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] ctx.Data["job_name"] = task.JobName - attachs, err := models.GetModelArtsUserAttachments(ctx.User.ID) + attachs, err := models.GetModelArtsTrainAttachments(ctx.User.ID) if err != nil { ctx.ServerError("GetAllUserAttachments failed:", err) return err @@ -657,7 +657,7 @@ func versionErrorDataPrepare(ctx *context.Context, form auth.CreateModelArtsTrai var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] ctx.Data["job_name"] = task.JobName - attachs, err := models.GetModelArtsUserAttachments(ctx.User.ID) + attachs, err := models.GetModelArtsTrainAttachments(ctx.User.ID) if err != nil { ctx.ServerError("GetAllUserAttachments failed:", err) return err From 36e85c4d65938321ac875be839f7f1d7f6dc4060 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Fri, 24 Dec 2021 09:34:43 +0800 Subject: [PATCH 11/46] fix issue --- templates/repo/modelarts/trainjob/show.tmpl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/templates/repo/modelarts/trainjob/show.tmpl b/templates/repo/modelarts/trainjob/show.tmpl index f6de05a36..956853d94 100755 --- a/templates/repo/modelarts/trainjob/show.tmpl +++ b/templates/repo/modelarts/trainjob/show.tmpl @@ -667,7 +667,12 @@ td, th { html += "" html += "" html += "" - html += ""+ `${dirs_size}` + "" + if(data.Dirs[i].IsDir){ + html += "" + }else{ + html += ""+ `${dirs_size}` + "" + } + html += "" html += "" From 7377fdc4e0d686f6fc16ff83399cac5e964d96d9 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Fri, 24 Dec 2021 09:55:28 +0800 Subject: [PATCH 12/46] fix issue --- templates/repo/debugjob/index.tmpl | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/templates/repo/debugjob/index.tmpl b/templates/repo/debugjob/index.tmpl index 7aa4bfa25..7fd655a9c 100755 --- a/templates/repo/debugjob/index.tmpl +++ b/templates/repo/debugjob/index.tmpl @@ -203,10 +203,10 @@ - +
{{template "repo/header" .}} - + {{template "base/alert" .}} @@ -516,6 +516,7 @@ onApprove: function() { document.getElementById(delId).submit() flag = true + $('.alert').html('删除成功').removeClass('alert-success').addClass('alert-danger').show().delay(1500).fadeOut(); }, onHidden: function() { if (flag == false) { @@ -704,10 +705,13 @@ $("iframe[name=iframeContent]").on("load", function() {   var responseText = $("iframe")[0].contentDocument.body.getElementsByTagName("pre")[0].innerHTML;  + console.log("responseText",responseText) var json1 = JSON.parse(responseText) $('#mask').css('display', 'none') - parent.location.href - + // parent.location.href + console.log(json1) + console.log(json1.result_code) + console.log(json1.result_code === "0") if (json1.result_code === "0") { $('.alert').html('操作成功!').removeClass('alert-danger').addClass('alert-success').show().delay(1500).fadeOut(); } else { From f73020e4be51265e8816c1ae9469ed884b5591b0 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Fri, 24 Dec 2021 09:58:47 +0800 Subject: [PATCH 13/46] fix issue --- templates/repo/debugjob/index.tmpl | 5 ----- 1 file changed, 5 deletions(-) diff --git a/templates/repo/debugjob/index.tmpl b/templates/repo/debugjob/index.tmpl index 7fd655a9c..5af945caf 100755 --- a/templates/repo/debugjob/index.tmpl +++ b/templates/repo/debugjob/index.tmpl @@ -705,13 +705,8 @@ $("iframe[name=iframeContent]").on("load", function() {   var responseText = $("iframe")[0].contentDocument.body.getElementsByTagName("pre")[0].innerHTML;  - console.log("responseText",responseText) var json1 = JSON.parse(responseText) $('#mask').css('display', 'none') - // parent.location.href - console.log(json1) - console.log(json1.result_code) - console.log(json1.result_code === "0") if (json1.result_code === "0") { $('.alert').html('操作成功!').removeClass('alert-danger').addClass('alert-success').show().delay(1500).fadeOut(); } else { From b98eab25eace96858e8bc824b558d4efec39805d Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Fri, 24 Dec 2021 10:02:01 +0800 Subject: [PATCH 14/46] fix issue --- templates/repo/debugjob/index.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/repo/debugjob/index.tmpl b/templates/repo/debugjob/index.tmpl index 5af945caf..7e6cbdd82 100755 --- a/templates/repo/debugjob/index.tmpl +++ b/templates/repo/debugjob/index.tmpl @@ -516,7 +516,7 @@ onApprove: function() { document.getElementById(delId).submit() flag = true - $('.alert').html('删除成功').removeClass('alert-success').addClass('alert-danger').show().delay(1500).fadeOut(); + $('.alert').html('操作成功!').removeClass('alert-danger').addClass('alert-success').show().delay(1500).fadeOut(); }, onHidden: function() { if (flag == false) { From d18a7db5732a6cd4a456c83007061653ff69c26d Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Fri, 24 Dec 2021 11:06:57 +0800 Subject: [PATCH 15/46] right --- routers/repo/cloudbrain.go | 7 +++++++ routers/repo/modelarts.go | 14 ++++++++++++++ routers/routes/routes.go | 8 ++++---- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 3c60396b6..382d61f61 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -277,6 +277,13 @@ func CloudBrainRestart(ctx *context.Context) { break } + if !ctx.IsSigned || (ctx.User.ID != task.UserID && !ctx.IsUserSiteAdmin()){ + log.Error("the user has no right ro restart the job", task.JobName, ctx.Data["MsgID"]) + resultCode = "-1" + errorMsg = "you have no right to restart the job" + break + } + count, err := models.GetCloudbrainCountByUserID(ctx.User.ID) if err != nil { log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index f916fc157..d2ade7c17 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -248,6 +248,13 @@ func NotebookManage(ctx *context.Context) { errorMsg = "the job is not running" break } + + if !ctx.IsSigned || (ctx.User.ID != task.UserID && !ctx.IsUserSiteAdmin() && !ctx.IsUserRepoOwner()){ + log.Error("the user has no right ro stop the job", task.JobName, ctx.Data["MsgID"]) + resultCode = "-1" + errorMsg = "you have no right to stop the job" + break + } } else if action == models.ActionRestart { if task.Status != string(models.ModelArtsStopped) && task.Status != string(models.ModelArtsStartFailed) && task.Status != string(models.ModelArtsCreateFailed) { log.Error("the job(%s) is not stopped", task.JobName, ctx.Data["MsgID"]) @@ -256,6 +263,13 @@ func NotebookManage(ctx *context.Context) { break } + if !ctx.IsSigned || (ctx.User.ID != task.UserID && !ctx.IsUserSiteAdmin()){ + log.Error("the user has no right ro restart the job", task.JobName, ctx.Data["MsgID"]) + resultCode = "-1" + errorMsg = "you have no right to restart the job" + break + } + count, err := models.GetCloudbrainNotebookCountByUserID(ctx.User.ID) if err != nil { log.Error("GetCloudbrainNotebookCountByUserID failed:%v", err, ctx.Data["MsgID"]) diff --git a/routers/routes/routes.go b/routers/routes/routes.go index b7bb1cd01..ad1ce4f33 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -964,11 +964,11 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/cloudbrain", func() { m.Group("/:jobid", func() { m.Get("", reqRepoCloudBrainReader, repo.CloudBrainShow) - m.Get("/debug", reqRepoCloudBrainWriter, repo.CloudBrainDebug) + m.Get("/debug", cloudbrain.AdminOrJobCreaterRight, repo.CloudBrainDebug) m.Post("/commit_image", cloudbrain.AdminOrOwnerOrJobCreaterRight, bindIgnErr(auth.CommitImageCloudBrainForm{}), repo.CloudBrainCommitImage) m.Post("/stop", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.CloudBrainStop) m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.CloudBrainDel) - m.Post("/restart", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.CloudBrainRestart) + m.Post("/restart", reqRepoCloudBrainWriter, repo.CloudBrainRestart) m.Get("/rate", reqRepoCloudBrainReader, repo.GetRate) m.Get("/models", reqRepoCloudBrainReader, repo.CloudBrainShowModels) m.Get("/download_model", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.CloudBrainDownloadModel) @@ -1003,8 +1003,8 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/notebook", func() { m.Group("/:jobid", func() { m.Get("", reqRepoCloudBrainReader, repo.NotebookShow) - m.Get("/debug", reqRepoCloudBrainWriter, repo.NotebookDebug) - m.Post("/:action", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.NotebookManage) + m.Get("/debug", cloudbrain.AdminOrJobCreaterRight, repo.NotebookDebug) + m.Post("/:action", reqRepoCloudBrainWriter, repo.NotebookManage) m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.NotebookDel) }) m.Get("/create", reqRepoCloudBrainWriter, repo.NotebookNew) From 447203cb8d55e824c9d1e1536bb4d436e4ccb9ff Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Fri, 24 Dec 2021 11:22:36 +0800 Subject: [PATCH 16/46] opt --- routers/repo/modelarts.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 603624fe9..4943b4cf3 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -74,7 +74,7 @@ func DebugJobIndex(ctx *context.Context) { } for i, task := range ciTasks { - ciTasks[i].CanDebug = cloudbrain.CanCreateOrDebugJob(ctx) + ciTasks[i].CanDebug = cloudbrain.CanModifyJob(ctx, &task.Cloudbrain) ciTasks[i].CanDel = cloudbrain.CanDeleteJob(ctx, &task.Cloudbrain) ciTasks[i].Cloudbrain.ComputeResource = task.ComputeResource } From 19fae465a37f0d65969cda8a870f53da91b86120 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Fri, 24 Dec 2021 11:35:59 +0800 Subject: [PATCH 17/46] #981 fix bug --- models/repo_tag.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/models/repo_tag.go b/models/repo_tag.go index ceac2850e..c8e675d75 100644 --- a/models/repo_tag.go +++ b/models/repo_tag.go @@ -76,6 +76,10 @@ func UpdateTagReposByID(tagID, orgID int64, repoIdList []int64) error { return err } + if len(repoIdList) == 0 { + return sess.Commit() + } + //add new tag repos data := make([]*OfficialTagRepos, 0) for _, repoId := range repoIdList { From a0b4daa361b5032554393250bc2ca0c35b30e2b4 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Fri, 24 Dec 2021 11:36:18 +0800 Subject: [PATCH 18/46] redirect html --- routers/repo/modelarts.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 4943b4cf3..c292f0d31 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -149,7 +149,7 @@ func NotebookCreate(ctx *context.Context, form auth.CreateModelArtsNotebookForm) ctx.RenderWithErr(err.Error(), tplModelArtsNotebookNew, &form) return } - ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/debugjob") + ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/debugjob?debugListType=all") } func NotebookShow(ctx *context.Context) { From ad07b86e2a8afac88c35b48801c3d246bbb9f301 Mon Sep 17 00:00:00 2001 From: Gitea Date: Fri, 24 Dec 2021 12:41:26 +0800 Subject: [PATCH 19/46] =?UTF-8?q?fix-981=20=E7=BB=84=E7=BB=87=E4=B8=BB?= =?UTF-8?q?=E9=A1=B5=E5=A2=9E=E5=8A=A0=E7=B2=BE=E9=80=89=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E7=9B=B8=E5=85=B3=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- options/locale/locale_en-US.ini | 3 + options/locale/locale_zh-CN.ini | 3 + templates/org/home.tmpl | 9 +- templates/org/member/members.tmpl | 5 +- templates/org/navber.tmpl | 42 ++++- templates/org/select_pro.tmpl | 285 ++++++++++++++++++++++++++++++ templates/org/team/teams.tmpl | 6 +- 7 files changed, 339 insertions(+), 14 deletions(-) create mode 100644 templates/org/select_pro.tmpl diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index b58021ea2..3a65d974d 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -222,6 +222,7 @@ contributors = Contributors [explore] repos = Repositories +select_repos = Select the project users = Users organizations = Organizations images = CloudImages @@ -234,6 +235,8 @@ org_no_results = No matching organizations found. code_no_results = No source code matching your search term found. code_search_results = Search results for '%s' code_last_indexed_at = Last indexed %s +save=save +cancel=cancel [auth] create_new_account = Register Account diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 7c821824d..ee7ca709a 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -224,6 +224,7 @@ contributors=贡献者 [explore] repos=项目 +select_repos=精选项目 users=用户 organizations=组织 images = 云脑镜像 @@ -238,6 +239,8 @@ org_no_results=未找到匹配的组织。 code_no_results=未找到与搜索字词匹配的源代码。 code_search_results=“%s” 的搜索结果是 code_last_indexed_at=最后索引于 %s +save=保存 +cancel=取消 [auth] create_new_account=注册帐号 diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index 7e9970d2b..e03c28a9e 100755 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -20,10 +20,11 @@
-
- {{template "org/navber" .}} - -
+ {{template "org/navber" .}} + {{template "org/select_pro" .}} +
+ +
{{if .CanCreateOrgRepo}} diff --git a/templates/org/member/members.tmpl b/templates/org/member/members.tmpl index 810a9eabb..87189c015 100644 --- a/templates/org/member/members.tmpl +++ b/templates/org/member/members.tmpl @@ -3,10 +3,11 @@ {{template "org/header" .}}
{{template "base/alert" .}} + {{template "org/navber" .}}
- {{template "org/navber" .}} + -
+
{{ range .Members}}
diff --git a/templates/org/navber.tmpl b/templates/org/navber.tmpl index 7bb2ff69c..f7e88c1e9 100755 --- a/templates/org/navber.tmpl +++ b/templates/org/navber.tmpl @@ -1,4 +1,4 @@ -
+ -
+ \ No newline at end of file +
--> + + + + \ No newline at end of file diff --git a/templates/org/select_pro.tmpl b/templates/org/select_pro.tmpl new file mode 100644 index 000000000..30da2385e --- /dev/null +++ b/templates/org/select_pro.tmpl @@ -0,0 +1,285 @@ + +
+
+ {{if .tags}} + + 精选项目 + + + {{if .IsOrganizationOwner}} + {{svg "octicon-gear" 16}}自定义 + {{end}} + {{end}} + +
+
+ {{ range .tags}} + {{if eq .TagName "精选项目"}} + +
+ {{ range .RepoList}} +
+ +
+
+ {{.Name}} +
+
+ {{.Description}} +
+ + +
+ {{if .Topics }} +
+ {{range .Topics}} + {{if ne . "" }}
{{.}}
{{end}} + {{end}} +
+ {{end}} +
+ + + + + +
+
+ {{end}} +
+ + {{end}} + {{end}} + +
+ +
+ + + + \ No newline at end of file diff --git a/templates/org/team/teams.tmpl b/templates/org/team/teams.tmpl index 21bd47e9e..e7081b58f 100644 --- a/templates/org/team/teams.tmpl +++ b/templates/org/team/teams.tmpl @@ -3,12 +3,12 @@ {{template "org/header" .}}
{{template "base/alert" .}} - + {{template "org/navber" .}}
- {{template "org/navber" .}} + -
+
{{range .Teams}}
From 1fcaf468ccd9856d67ed978259a9455ae20eb759 Mon Sep 17 00:00:00 2001 From: Gitea Date: Mon, 27 Dec 2021 08:31:01 +0800 Subject: [PATCH 20/46] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/org/select_pro.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/org/select_pro.tmpl b/templates/org/select_pro.tmpl index 30da2385e..5d324d1e6 100644 --- a/templates/org/select_pro.tmpl +++ b/templates/org/select_pro.tmpl @@ -67,8 +67,8 @@
-
- {{.Name}} +
{{.Description}} From 1803d523b3dc07cc75e5c6bd9837580602e555ae Mon Sep 17 00:00:00 2001 From: Gitea Date: Mon, 27 Dec 2021 09:04:53 +0800 Subject: [PATCH 21/46] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E4=B8=AA=E6=95=B0?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/org/select_pro.tmpl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/templates/org/select_pro.tmpl b/templates/org/select_pro.tmpl index 5d324d1e6..0bf0b08a6 100644 --- a/templates/org/select_pro.tmpl +++ b/templates/org/select_pro.tmpl @@ -44,6 +44,9 @@ .full_height{ height: 100%; } + /deep/ ui.checkbox input[type=checkbox]::after{ + border: 1px solid #0366D6 !important; + }
@@ -189,7 +192,7 @@ pro_html += '
' } else{ - pro_html += `
` + pro_html += `
` pro_html += '
' } } From 3e1159d0454439736e98c80c655c1e8132692618 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Mon, 27 Dec 2021 09:57:18 +0800 Subject: [PATCH 22/46] fix issue --- options/locale/locale_en-US.ini | 2 ++ options/locale/locale_zh-CN.ini | 2 ++ templates/repo/modelmanage/showinfo.tmpl | 44 ++++++++++++++---------- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index b58021ea2..597e9fbc5 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -900,6 +900,8 @@ model.manage.F1 = F1 model.manage.Precision = Precision model.manage.Recall = Recall model.manage.sava_model = Sava Model +model.manage.model_manage = ModelManage +model.manage.model_accuracy = Model Accuracy template.items = Template Items template.git_content = Git Content (Default Branch) diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 7c821824d..286816260 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -910,6 +910,8 @@ model.manage.F1 = F1值 model.manage.Precision = 精确率 model.manage.Recall = 召回率 model.manage.sava_model = 保存模型 +model.manage.model_manage = 模型管理 +model.manage.model_accuracy = 模型精度 template.items=模板选项 template.git_content=Git数据(默认分支) diff --git a/templates/repo/modelmanage/showinfo.tmpl b/templates/repo/modelmanage/showinfo.tmpl index 8cdb08a32..d15efe4a0 100644 --- a/templates/repo/modelmanage/showinfo.tmpl +++ b/templates/repo/modelmanage/showinfo.tmpl @@ -69,7 +69,7 @@
- 模型精度 + {{$.i18n.Tr "repo.model.manage.model_accuracy"}} - + @@ -157,11 +161,11 @@ - + - + @@ -173,6 +177,7 @@ {{template "base/footer" .}}
准确率{{$.i18n.Tr "repo.model.manage.Accuracy"}}
精确率{{$.i18n.Tr "repo.model.manage.Precision"}}
召回率{{$.i18n.Tr "repo.model.manage.Recall"}}