diff --git a/models/ai_model_manage.go b/models/ai_model_manage.go index ac4aed302..53732350b 100644 --- a/models/ai_model_manage.go +++ b/models/ai_model_manage.go @@ -54,6 +54,7 @@ type AiModelManageConvert struct { InputShape string `xorm:"varchar(2000)"` InputDataFormat string `xorm:"NOT NULL"` Description string `xorm:"varchar(2000)"` + Path string `xorm:"varchar(400) NOT NULL"` CreatedUnix timeutil.TimeStamp `xorm:"created"` UpdatedUnix timeutil.TimeStamp `xorm:"updated"` UserName string diff --git a/routers/repo/ai_model_manage.go b/routers/repo/ai_model_manage.go index 4db546180..840952a24 100644 --- a/routers/repo/ai_model_manage.go +++ b/routers/repo/ai_model_manage.go @@ -25,6 +25,7 @@ const ( tplModelManageConvertIndex = "repo/modelmanage/convertIndex" tplModelManageDownload = "repo/modelmanage/download" tplModelInfo = "repo/modelmanage/showinfo" + tplModelConvertInfo = "repo/modelmanage/convertshowinfo" MODEL_LATEST = 1 MODEL_NOT_LATEST = 0 ) @@ -146,6 +147,39 @@ func SaveNewNameModel(ctx *context.Context) { log.Info("save model end.") } +func SaveModelConvert(ctx *context.Context) { + log.Info("save model start.") + if !ctx.Repo.CanWrite(models.UnitTypeModelManage) { + ctx.JSON(403, ctx.Tr("repo.model_noright")) + return + } + name := ctx.Query("name") + desc := ctx.Query("desc") + modelId := ctx.Query("modelId") + SrcEngine := ctx.QueryInt("SrcEngine") + InputShape := ctx.Query("inputshape") + InputDataFormat := ctx.Query("inputdataformat") + DestFormat := ctx.QueryInt("DestFormat") + NetOutputFormat := ctx.QueryInt("NetOutputFormat") + + uuid := uuid.NewV4() + id := uuid.String() + modelConvert := &models.AiModelManageConvert{ + ID: id, + Name: name, + Description: desc, + SrcEngine: SrcEngine, + RepoId: ctx.Repo.Repository.ID, + ModelId: modelId, + DestFormat: DestFormat, + NetOutputFormat: NetOutputFormat, + InputShape: InputShape, + InputDataFormat: InputDataFormat, + UserId: ctx.User.ID, + } + models.SaveModelConvert(modelConvert) +} + func SaveModel(ctx *context.Context) { log.Info("save model start.") JobId := ctx.Query("JobId") @@ -226,6 +260,19 @@ func downloadModelFromCloudBrainOne(modelUUID string, jobName string, parentDir } } +func DeleteModelConvert(ctx *context.Context) { + log.Info("delete model convert start.") + id := ctx.Query("ID") + err := models.DeleteModelConvertById(id) + if err != nil { + ctx.JSON(500, err.Error()) + } else { + ctx.JSON(200, map[string]string{ + "result_code": "0", + }) + } +} + func DeleteModel(ctx *context.Context) { log.Info("delete model start.") id := ctx.Query("ID") @@ -520,6 +567,15 @@ func ShowModelInfo(ctx *context.Context) { ctx.HTML(200, tplModelInfo) } +func ShowModelConvertInfo(ctx *context.Context) { + ctx.Data["ID"] = ctx.Query("ID") + ctx.Data["name"] = ctx.Query("name") + ctx.Data["isModelManage"] = true + ctx.Data["ModelManageAccess"] = ctx.Repo.CanWrite(models.UnitTypeModelManage) + + ctx.HTML(200, tplModelConvertInfo) +} + func ShowSingleModel(ctx *context.Context) { name := ctx.Query("name") @@ -623,6 +679,7 @@ func ConvertModelTemplate(ctx *context.Context) { ctx.Data["MODEL_COUNT"] = 0 ctx.Data["ModelManageAccess"] = ctx.Repo.CanWrite(models.UnitTypeModelManage) ctx.Data["TRAIN_COUNT"] = 0 + ctx.HTML(200, tplModelManageConvertIndex) } @@ -660,6 +717,50 @@ func isOper(ctx *context.Context, modelUserId int64) bool { return false } +func ShowModelConvertPageInfo(ctx *context.Context) { + log.Info("ShowModelConvertInfo start.") + if !isQueryRight(ctx) { + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) + return + } + page := ctx.QueryInt("page") + if page <= 0 { + page = 1 + } + pageSize := ctx.QueryInt("pageSize") + if pageSize <= 0 { + pageSize = setting.UI.IssuePagingNum + } + repoId := ctx.Repo.Repository.ID + modelResult, count, err := models.QueryModelConvert(&models.AiModelQueryOptions{ + ListOptions: models.ListOptions{ + Page: page, + PageSize: pageSize, + }, + RepoID: repoId, + }) + if err != nil { + ctx.ServerError("Cloudbrain", err) + return + } + userIds := make([]int64, len(modelResult)) + for i, model := range modelResult { + model.IsCanOper = isOper(ctx, model.UserId) + model.IsCanDelete = isCanDelete(ctx, model.UserId) + userIds[i] = model.UserId + } + userNameMap := queryUserName(userIds) + for _, model := range modelResult { + value := userNameMap[model.UserId] + if value != nil { + model.UserName = value.Name + model.UserRelAvatarLink = value.RelAvatarLink() + } + } + ctx.Data["Tasks"] = modelResult + +} + func ShowModelPageInfo(ctx *context.Context) { log.Info("ShowModelInfo start.") if !isQueryRight(ctx) { diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 12447b96b..035ee264d 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -1077,12 +1077,15 @@ func RegisterRoutes(m *macaron.Macaron) { }, context.RepoRef()) m.Group("/modelmanage", func() { m.Post("/create_model", reqRepoModelManageWriter, repo.SaveModel) + m.Post("/create_model_convert", reqRepoModelManageWriter, repo.SaveModelConvert) m.Post("/create_new_model", repo.SaveNewNameModel) m.Delete("/delete_model", repo.DeleteModel) + m.Delete("/delete_model_convert", repo.DeleteModelConvert) m.Put("/modify_model", repo.ModifyModelInfo) m.Get("/show_model", reqRepoModelManageReader, repo.ShowModelTemplate) m.Get("/convert_model", reqRepoModelManageReader, repo.ConvertModelTemplate) m.Get("/show_model_info", repo.ShowModelInfo) + m.Get("/show_model_convert_info", repo.ShowModelConvertInfo) m.Get("/show_model_info_api", repo.ShowSingleModel) m.Get("/show_model_api", repo.ShowModelPageInfo) m.Get("/show_model_child_api", repo.ShowOneVersionOtherModel) diff --git a/templates/repo/cloudbrain/benchmark/index.tmpl b/templates/repo/cloudbrain/benchmark/index.tmpl index be2d8e307..38464d751 100755 --- a/templates/repo/cloudbrain/benchmark/index.tmpl +++ b/templates/repo/cloudbrain/benchmark/index.tmpl @@ -67,7 +67,7 @@