Browse Source

提交界面Tab页面控制的代码。

Signed-off-by: zouap <zouap@pcl.ac.cn>
pull/1036/head
zouap 3 years ago
parent
commit
ea47c6a18c
8 changed files with 63 additions and 11 deletions
  1. +6
    -0
      models/repo.go
  2. +16
    -0
      models/repo_unit.go
  3. +14
    -0
      models/unit.go
  4. +1
    -0
      modules/auth/repo_form.go
  5. +1
    -0
      modules/context/repo.go
  6. +2
    -2
      routers/repo/ai_model_manage.go
  7. +12
    -0
      routers/repo/setting.go
  8. +11
    -9
      routers/routes/routes.go

+ 6
- 0
models/repo.go View File

@@ -1114,6 +1114,12 @@ func CreateRepository(ctx DBContext, doer, u *User, repo *Repository) (err error
Type: tp,
Config: &BlockChainConfig{EnableBlockChain: true},
})
} else if tp == UnitTypeModelManage {
units = append(units, RepoUnit{
RepoID: repo.ID,
Type: tp,
Config: &ModelManageConfig{EnableModelManage: true},
})
} else {
units = append(units, RepoUnit{
RepoID: repo.ID,


+ 16
- 0
models/repo_unit.go View File

@@ -131,6 +131,20 @@ type CloudBrainConfig struct {
EnableCloudBrain bool
}

type ModelManageConfig struct {
EnableModelManage bool
}

// FromDB fills up a CloudBrainConfig from serialized format.
func (cfg *ModelManageConfig) FromDB(bs []byte) error {
return json.Unmarshal(bs, &cfg)
}

// ToDB exports a CloudBrainConfig to a serialized format.
func (cfg *ModelManageConfig) ToDB() ([]byte, error) {
return json.Marshal(cfg)
}

// FromDB fills up a CloudBrainConfig from serialized format.
func (cfg *CloudBrainConfig) FromDB(bs []byte) error {
return json.Unmarshal(bs, &cfg)
@@ -176,6 +190,8 @@ func (r *RepoUnit) BeforeSet(colName string, val xorm.Cell) {
r.Config = new(CloudBrainConfig)
case UnitTypeBlockChain:
r.Config = new(BlockChainConfig)
case UnitTypeModelManage:
r.Config = new(ModelManageConfig)
default:
panic("unrecognized repo unit type: " + com.ToStr(*val))
}


+ 14
- 0
models/unit.go View File

@@ -27,6 +27,7 @@ const (
UnitTypeDatasets UnitType = 10 // 10 Dataset
UnitTypeCloudBrain UnitType = 11 // 11 CloudBrain
UnitTypeBlockChain UnitType = 12 // 12 BlockChain
UnitTypeModelManage UnitType = 13 // 13 ModelManage
)

// Value returns integer value for unit type
@@ -56,6 +57,8 @@ func (u UnitType) String() string {
return "UnitTypeCloudBrain"
case UnitTypeBlockChain:
return "UnitTypeBlockChain"
case UnitTypeModelManage:
return "UnitTypeModelManage"
}
return fmt.Sprintf("Unknown UnitType %d", u)
}
@@ -80,6 +83,7 @@ var (
UnitTypeDatasets,
UnitTypeCloudBrain,
UnitTypeBlockChain,
UnitTypeModelManage,
}

// DefaultRepoUnits contains the default unit types
@@ -92,6 +96,7 @@ var (
UnitTypeDatasets,
UnitTypeCloudBrain,
UnitTypeBlockChain,
UnitTypeModelManage,
}

// NotAllowedDefaultRepoUnits contains units that can't be default
@@ -281,6 +286,14 @@ var (
7,
}

UnitModelManage = Unit{
UnitTypeModelManage,
"repo.modelmanage",
"/modelmanage",
"repo.modelmanage.desc",
8,
}

// Units contains all the units
Units = map[UnitType]Unit{
UnitTypeCode: UnitCode,
@@ -293,6 +306,7 @@ var (
UnitTypeDatasets: UnitDataset,
UnitTypeCloudBrain: UnitCloudBrain,
UnitTypeBlockChain: UnitBlockChain,
UnitTypeModelManage: UnitModelManage,
}
)



+ 1
- 0
modules/auth/repo_form.go View File

@@ -122,6 +122,7 @@ type RepoSettingForm struct {
// Advanced settings
EnableDataset bool
EnableCloudBrain bool
EnableModelManager bool
EnableWiki bool
EnableExternalWiki bool
ExternalWikiURL string


+ 1
- 0
modules/context/repo.go View File

@@ -821,5 +821,6 @@ func UnitTypes() macaron.Handler {
ctx.Data["UnitTypeExternalWiki"] = models.UnitTypeExternalWiki
ctx.Data["UnitTypeExternalTracker"] = models.UnitTypeExternalTracker
ctx.Data["UnitTypeBlockChain"] = models.UnitTypeBlockChain
ctx.Data["UnitTypeModelManage"] = models.UnitTypeModelManage
}
}

+ 2
- 2
routers/repo/ai_model_manage.go View File

@@ -118,7 +118,7 @@ func SaveModel(ctx *context.Context) {
label := ctx.Query("Label")
description := ctx.Query("Description")

if !ctx.Repo.CanWrite(models.UnitTypeCloudBrain) {
if !ctx.Repo.CanWrite(models.UnitTypeModelManage) {
ctx.ServerError("No right.", errors.New(ctx.Tr("repo.model_noright")))
return
}
@@ -418,7 +418,7 @@ func ShowModelTemplate(ctx *context.Context) {

func isQueryRight(ctx *context.Context) bool {
if ctx.Repo.Repository.IsPrivate {
if ctx.Repo.CanRead(models.UnitTypeCloudBrain) || ctx.User.IsAdmin || ctx.Repo.IsAdmin() || ctx.Repo.IsOwner() {
if ctx.Repo.CanRead(models.UnitTypeModelManage) || ctx.User.IsAdmin || ctx.Repo.IsAdmin() || ctx.Repo.IsOwner() {
return true
}
return false


+ 12
- 0
routers/repo/setting.go View File

@@ -239,6 +239,18 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
deleteUnitTypes = append(deleteUnitTypes, models.UnitTypeCloudBrain)
}

if form.EnableModelManager && !models.UnitTypeModelManage.UnitGlobalDisabled() {
units = append(units, models.RepoUnit{
RepoID: repo.ID,
Type: models.UnitTypeModelManage,
Config: &models.ModelManageConfig{
EnableModelManage: form.EnableModelManager,
},
})
} else if !models.UnitTypeModelManage.UnitGlobalDisabled() {
deleteUnitTypes = append(deleteUnitTypes, models.UnitTypeModelManage)
}

if form.EnableWiki && form.EnableExternalWiki && !models.UnitTypeExternalWiki.UnitGlobalDisabled() {
if !validation.IsValidExternalURL(form.ExternalWikiURL) {
ctx.Flash.Error(ctx.Tr("repo.settings.external_wiki_url_error"))


+ 11
- 9
routers/routes/routes.go View File

@@ -616,6 +616,8 @@ func RegisterRoutes(m *macaron.Macaron) {
reqRepoDatasetWriter := context.RequireRepoWriter(models.UnitTypeDatasets)
reqRepoCloudBrainReader := context.RequireRepoReader(models.UnitTypeCloudBrain)
reqRepoCloudBrainWriter := context.RequireRepoWriter(models.UnitTypeCloudBrain)
reqRepoModelManageReader := context.RequireRepoReader(models.UnitTypeModelManage)
reqRepoModelManageWriter := context.RequireRepoWriter(models.UnitTypeModelManage)
//reqRepoBlockChainReader := context.RequireRepoReader(models.UnitTypeBlockChain)
//reqRepoBlockChainWriter := context.RequireRepoWriter(models.UnitTypeBlockChain)

@@ -973,21 +975,21 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Post("/create", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateCloudBrainForm{}), repo.CloudBrainCreate)
}, context.RepoRef())
m.Group("/modelmanage", func() {
m.Post("/create_model", repo.SaveModel)
m.Post("/create_model", reqRepoModelManageWriter, repo.SaveModel)
m.Delete("/delete_model", repo.DeleteModel)
m.Put("/modify_model", repo.ModifyModelInfo)
m.Get("/show_model", reqRepoCloudBrainReader, repo.ShowModelTemplate)
m.Get("/show_model_info", reqRepoCloudBrainReader, repo.ShowModelInfo)
m.Get("/show_model_info_api", reqRepoCloudBrainReader, repo.ShowSingleModel)
m.Get("/show_model_api", reqRepoCloudBrainReader, repo.ShowModelPageInfo)
m.Get("/show_model_child_api", reqRepoCloudBrainReader, repo.ShowOneVersionOtherModel)
m.Get("/show_model", reqRepoModelManageReader, repo.ShowModelTemplate)
m.Get("/show_model_info", repo.ShowModelInfo)
m.Get("/show_model_info_api", repo.ShowSingleModel)
m.Get("/show_model_api", repo.ShowModelPageInfo)
m.Get("/show_model_child_api", repo.ShowOneVersionOtherModel)
m.Get("/query_train_job", reqRepoCloudBrainReader, repo.QueryTrainJobList)
m.Get("/query_train_job_version", reqRepoCloudBrainReader, repo.QueryTrainJobVersionList)
m.Group("/:ID", func() {
m.Get("", reqRepoCloudBrainReader, repo.ShowSingleModel)
m.Get("/downloadsingle", reqRepoCloudBrainReader, repo.DownloadSingleModelFile)
m.Get("", repo.ShowSingleModel)
m.Get("/downloadsingle", repo.DownloadSingleModelFile)
})
m.Get("/downloadall", reqRepoCloudBrainReader, repo.DownloadMultiModelFile)
m.Get("/downloadall", repo.DownloadMultiModelFile)
}, context.RepoRef())

m.Group("/modelarts", func() {


Loading…
Cancel
Save