diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 8bb3357ae..b2eed744d 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -144,8 +144,10 @@ type Cloudbrain struct { CkptName string //权重文件名称 ResultUrl string //推理结果的obs路径 - User *User `xorm:"-"` - Repo *Repository `xorm:"-"` + User *User `xorm:"-"` + Repo *Repository `xorm:"-"` + BenchmarkTypeName string `xorm:"-"` + BenchmarkTypeRankLink string `xorm:"-"` } type CloudbrainInfo struct { @@ -407,9 +409,10 @@ type BenchmarkTypes struct { } type BenchmarkType struct { - Id int `json:"id"` - First string `json:"first"` //一级算法类型名称 - Second []*BenchmarkDataset `json:"second"` + Id int `json:"id"` + RankLink string `json:"rank_link"` + First string `json:"first"` //一级算法类型名称 + Second []*BenchmarkDataset `json:"second"` } type BenchmarkDataset struct { diff --git a/models/dataset_permission.go b/models/dataset_permission.go old mode 100644 new mode 100755 index a4c232d26..f9a1e61ff --- a/models/dataset_permission.go +++ b/models/dataset_permission.go @@ -4,26 +4,27 @@ package models -import ( - "code.gitea.io/gitea/modules/log" -) +import "code.gitea.io/gitea/modules/log" // GetUserDataSetPermission returns the user permissions to the data_set func GetUserDataSetPermission(dataSet *Dataset, user *User) (isPermit bool, err error) { isPermit = false - switch dataSet.Status { - case DatasetStatusDeleted: - log.Error("the data_set has been deleted") - case DatasetStatusPrivate: - if !user.IsAdmin && user.ID != dataSet.UserID { - log.Error("the user is not admin nor the owner of the data_set") + if user != nil { + switch dataSet.Status { + case DatasetStatusDeleted: + log.Error("the data_set has been deleted") + case DatasetStatusPrivate: + if !user.IsAdmin && user.ID != dataSet.UserID { + log.Error("the user is not admin nor the owner of the data_set") + } else { + isPermit = true + } + case DatasetStatusPublic: + isPermit = true + default: + log.Error("the status of data_set is wrong") } - isPermit = true - case DatasetStatusPublic: - isPermit = true - default: - log.Error("the status of data_set is wrong") } return isPermit, nil diff --git a/models/org.go b/models/org.go index e8006d55f..85fb157ae 100755 --- a/models/org.go +++ b/models/org.go @@ -180,8 +180,8 @@ func CreateOrganization(org, owner *User) (err error) { // Add initial creator to organization and owner team. if _, err = sess.Insert(&OrgUser{ - UID: owner.ID, - OrgID: org.ID, + UID: owner.ID, + OrgID: org.ID, IsPublic: setting.Service.DefaultOrgMemberVisible, }); err != nil { return fmt.Errorf("insert org-user relation: %v", err) diff --git a/models/topic.go b/models/topic.go index 5533da7bc..0b19bc1f0 100644 --- a/models/topic.go +++ b/models/topic.go @@ -324,3 +324,16 @@ func SaveTopics(repoID int64, topicNames ...string) error { return sess.Commit() } + +func GetOrgTopics(orgId int64) ([]Topic, error) { + result := make([]Topic, 0) + sql := "select distinct(t.*) from repository r " + + "inner join repo_topic rt on rt.repo_id = r.id " + + "inner join topic t on rt.topic_id = t.id " + + "where r.owner_id = ? order by repo_count desc limit 50" + if e := x.SQL(sql, orgId).Find(&result); e != nil { + return nil, e + } + + return result, nil +} diff --git a/modules/modelarts/resty.go b/modules/modelarts/resty.go index 65dd6fe6d..2f7d08c35 100755 --- a/modules/modelarts/resty.go +++ b/modules/modelarts/resty.go @@ -35,7 +35,8 @@ const ( //error code modelartsIllegalToken = "ModelArts.6401" NotebookNotFound = "ModelArts.6404" - NotebookNoPermission = "ModelArts.6403" + NotebookNoPermission = "ModelArts.6407" + NotebookInvalid = "ModelArts.6400" ) func getRestyClient() *resty.Client { diff --git a/modules/repository/fork.go b/modules/repository/fork.go index da9039d00..e3ebbfee2 100644 --- a/modules/repository/fork.go +++ b/modules/repository/fork.go @@ -86,5 +86,11 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name, if err := models.CopyLanguageStat(oldRepo, repo); err != nil { log.Error("Copy language stat from oldRepo failed") } + //inherit parent repo's topics + if len(oldRepo.Topics) > 0 { + if err := models.SaveTopics(repo.ID, oldRepo.Topics...); err != nil { + log.Error("SaveTopics failed when fork,e=%v", err) + } + } return repo, models.CopyLFS(ctx, repo, oldRepo) } diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 0787e6ce6..fdd3f7f94 100755 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -235,7 +235,7 @@ page_recommend_org_more=More Organizations page_recommend_repo=Recommended Projects page_recommend_repo_desc=Excellent AI projects recommendation. To show your project here, page_recommend_repo_commit=Click here to submit. -page_recommend_repo_go=Click here to +page_recommend_repo_go=Click here to page_recommend_repo_more=explore more projects. page_dev_env=Collaborative Development Environment page_dev_env_desc=Provide a collaborative development environment for AI development, which is the biggest highlight that distinguishes the OpenI AI Collaboration Platform from other traditional Git platforms. @@ -1254,6 +1254,7 @@ issues.filter_sort.moststars = Most stars issues.filter_sort.feweststars = Fewest stars issues.filter_sort.mostforks = Most forks issues.filter_sort.fewestforks = Fewest forks +issues.filter_sort.downloadtimes = Most downloaded issues.action_open = Open issues.action_close = Close issues.action_label = Label @@ -2088,14 +2089,17 @@ team_unit_disabled = (Disabled) selected_couse=Selected Courses release_course = Publish Course all_keywords=All keywords +all_org_topics=All max_selectedPro= Select up to 9 public projects -custom_select_courses = Customize selected courses +custom_select_courses = Customize selected courses recommend_remain_pro = Remain save_fail_tips = The upper limit is exceeded select_again = Select more than 9, please select again! -custom_select_projects = Customize selected projects +custom_select_projects = Customize selected projects customize = Customize selected_project=Selected Projects +fold = Fold +unfold = Unfold form.name_reserved = The organization name '%s' is reserved. form.name_pattern_not_allowed = The pattern '%s' is not allowed in an organization name. diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 2eeb72735..982dc1a49 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -2096,6 +2096,7 @@ team_unit_disabled=(已禁用) selected_couse=精选课程 release_course = 发布课程 all_keywords=全部关键字 +all_org_topics=全部 max_selectedPro= 最多可选9个公开项目 custom_select_courses = 自定义精选课程 recommend_remain_pro = 还能推荐 @@ -2104,6 +2105,8 @@ select_again = 选择超过9个,请重新选择! custom_select_projects = 自定义精选项目 customize = 自定义 selected_project=精选项目 +fold = 折叠 +unfold = 展开 form.name_reserved=组织名称 '%s' 是被保留的。 form.name_pattern_not_allowed=组织名称中不允许使用 "%s"。 diff --git a/routers/org/home.go b/routers/org/home.go index c9769f559..3ffb4fd86 100755 --- a/routers/org/home.go +++ b/routers/org/home.go @@ -94,6 +94,13 @@ func Home(ctx *context.Context) { recommendCourseKeyWords, _ := repository.GetRecommendCourseKeyWords() ctx.Data["CoursesKeywords"] = recommendCourseKeyWords + } else { + orgTopics, err := models.GetOrgTopics(org.ID) + if err != nil { + ctx.Error(500, "GetOrgTopics failed") + return + } + ctx.Data["OrgTopics"] = orgTopics } repos, count, err = models.SearchRepository(&models.SearchRepoOptions{ diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 4cde5d40d..a3ab2bbab 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -339,6 +339,8 @@ func CloudBrainBenchMarkShow(ctx *context.Context) { if benchmarkTypes == nil { if err := json.Unmarshal([]byte(setting.BenchmarkTypes), &benchmarkTypes); err != nil { log.Error("json.Unmarshal BenchmarkTypes(%s) failed:%v", setting.BenchmarkTypes, err, ctx.Data["MsgID"]) + ctx.ServerError(err.Error(), err) + return } } cloudBrainShow(ctx, tplCloudBrainBenchmarkShow) @@ -404,7 +406,7 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName) { } else { duration = int64(task.UpdatedUnix) - int64(task.CreatedUnix) } - if benchmarkTypes != nil { + if task.BenchmarkTypeID > 0 { for _, benchmarkType := range benchmarkTypes.BenchmarkType { if task.BenchmarkTypeID == benchmarkType.Id { ctx.Data["BenchmarkTypeName"] = benchmarkType.First @@ -1051,6 +1053,13 @@ func CloudBrainBenchmarkIndex(ctx *context.Context) { return } + if benchmarkTypes == nil { + if err := json.Unmarshal([]byte(setting.BenchmarkTypes), &benchmarkTypes); err != nil { + ctx.ServerError("Get BenchmarkTypes faild:", err) + return + } + } + for i, task := range ciTasks { ciTasks[i].CanDel = cloudbrain.CanDeleteJob(ctx, &task.Cloudbrain) ciTasks[i].Cloudbrain.ComputeResource = task.ComputeResource @@ -1061,6 +1070,16 @@ func CloudBrainBenchmarkIndex(ctx *context.Context) { duration = int64(task.Cloudbrain.UpdatedUnix) - int64(task.Cloudbrain.CreatedUnix) } ciTasks[i].TrainJobDuration = util.AddZero(duration/3600000) + ":" + util.AddZero(duration%3600000/60000) + ":" + util.AddZero(duration%60000/1000) + ciTasks[i].BenchmarkTypeName = "" + if task.BenchmarkTypeID > 0 { + for _, benchmarkType := range benchmarkTypes.BenchmarkType { + if task.BenchmarkTypeID == benchmarkType.Id { + ciTasks[i].BenchmarkTypeRankLink = benchmarkType.RankLink + ciTasks[i].BenchmarkTypeName = benchmarkType.First + break + } + } + } } pager := context.NewPagination(int(count), setting.UI.IssuePagingNum, page, 5) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index ae21e89c7..044652b2f 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -431,7 +431,7 @@ func NotebookDel(ctx *context.Context) { 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")) + ctx.RenderWithErr("the job has not been stopped", tplDebugJobIndex, nil) return } @@ -441,17 +441,17 @@ func NotebookDel(ctx *context.Context) { _, err := modelarts.DelNotebook2(jobID) if err != nil { log.Error("DelNotebook2(%s) failed:%v", task.JobName, err.Error()) - if strings.Contains(err.Error(), modelarts.NotebookNotFound) || strings.Contains(err.Error(), modelarts.NotebookNoPermission) { + if strings.Contains(err.Error(), modelarts.NotebookNotFound) || strings.Contains(err.Error(), modelarts.NotebookNoPermission) || strings.Contains(err.Error(), modelarts.NotebookInvalid){ log.Info("old notebook version") } else { - ctx.ServerError("DelNotebook2 failed", err) + ctx.RenderWithErr(err.Error(), tplDebugJobIndex, nil) return } } err = models.DeleteJob(task) if err != nil { - ctx.ServerError("DeleteJob failed", err) + ctx.RenderWithErr(err.Error(), tplDebugJobIndex, nil) return } diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 7fa06fa3b..4ef1e53e3 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -579,7 +579,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("", func() { m.Get("/attachments/:uuid", repo.GetAttachment) - }, reqSignIn) + }) m.Group("/attachments", func() { m.Post("", repo.UploadAttachment) diff --git a/templates/explore/repo_orgtop.tmpl b/templates/explore/repo_orgtop.tmpl index d9c29fd54..5706a92b8 100755 --- a/templates/explore/repo_orgtop.tmpl +++ b/templates/explore/repo_orgtop.tmpl @@ -53,8 +53,8 @@
diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index 865a780a8..2715cb649 100755 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -1,3 +1,4 @@ + {{template "base/head" .}}