|
|
@@ -480,9 +480,9 @@ func trainJobNewVersionDataPrepare(ctx *context.Context) error { |
|
|
|
var jobID = ctx.Params(":jobid") |
|
|
|
// var versionName = ctx.Params(":version-name") |
|
|
|
var versionName = ctx.Query("version_name") |
|
|
|
// canNewJob, err := canUserCreateTrainJobVersion(ctx, jobID) |
|
|
|
// canNewJob, err := canUserCreateTrainJobVersion(ctx, jobID, versionName) |
|
|
|
// if err != nil { |
|
|
|
// ctx.ServerError("get can info failed", err) |
|
|
|
// ctx.ServerError("canNewJob can info failed", err) |
|
|
|
// return err |
|
|
|
// } |
|
|
|
// ctx.Data["canNewJob"] = canNewJob |
|
|
@@ -1312,17 +1312,19 @@ func canUserCreateTrainJob(uid int64) (bool, error) { |
|
|
|
|
|
|
|
return org.IsOrgMember(uid) |
|
|
|
} |
|
|
|
func canUserCreateTrainJobVersion(ctx *context.Context, jobID string) (bool, error) { |
|
|
|
|
|
|
|
var versionName = "V0001" |
|
|
|
task, err := models.GetCloudbrainByJobIDAndVersionName(jobID, versionName) |
|
|
|
if err != nil { |
|
|
|
return false, err |
|
|
|
} |
|
|
|
if ctx.User.ID == task.User.ID { |
|
|
|
return true, nil |
|
|
|
} |
|
|
|
return false, err |
|
|
|
func canUserCreateTrainJobVersion(ctx *context.Context, jobID string, versionName string) (bool, error) { |
|
|
|
// task, err := models.GetCloudbrainByJobIDAndVersionName(jobID, versionName) |
|
|
|
// if err != nil { |
|
|
|
// return false, err |
|
|
|
// } |
|
|
|
// if ctx.User.ID == task.UserID { |
|
|
|
// canNewJob := true |
|
|
|
// return canNewJob, nil |
|
|
|
// } else { |
|
|
|
// canNewJob := false |
|
|
|
// return canNewJob, nil |
|
|
|
// } |
|
|
|
return true, nil |
|
|
|
} |
|
|
|
|
|
|
|
func TrainJobGetConfigList(ctx *context.Context) { |
|
|
@@ -1378,3 +1380,62 @@ func getConfigList(perPage, page int, sortBy, order, searchContent, configType s |
|
|
|
|
|
|
|
return list, nil |
|
|
|
} |
|
|
|
|
|
|
|
func ModelDownload(ctx *context.Context) { |
|
|
|
var ( |
|
|
|
err error |
|
|
|
) |
|
|
|
|
|
|
|
var jobID = ctx.Params(":jobid") |
|
|
|
versionName := ctx.Query("version_name") |
|
|
|
// versionName := "V0001" |
|
|
|
parentDir := ctx.Query("parent_dir") |
|
|
|
fileName := ctx.Query("file_name") |
|
|
|
log.Info("DownloadSingleModelFile start.") |
|
|
|
// id := ctx.Params(":ID") |
|
|
|
// path := Model_prefix + models.AttachmentRelativePath(id) + "/" + parentDir + fileName |
|
|
|
task, err := models.GetCloudbrainByJobIDAndVersionName(jobID, versionName) |
|
|
|
if err != nil { |
|
|
|
log.Error("GetCloudbrainByJobID(%s) failed:%v", task.JobName, err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
path := strings.TrimPrefix(path.Join(setting.TrainJobModelPath, task.JobName, setting.OutPutPath, versionName, parentDir, fileName), "/") |
|
|
|
log.Info("Download path is:%s", path) |
|
|
|
if setting.PROXYURL == "" { |
|
|
|
body, err := storage.ObsDownloadAFile(setting.Bucket, path) |
|
|
|
if err != nil { |
|
|
|
log.Info("download error.") |
|
|
|
} else { |
|
|
|
//count++ |
|
|
|
// models.ModifyModelDownloadCount(id) |
|
|
|
defer body.Close() |
|
|
|
ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+fileName) |
|
|
|
ctx.Resp.Header().Set("Content-Type", "application/octet-stream") |
|
|
|
p := make([]byte, 1024) |
|
|
|
var readErr error |
|
|
|
var readCount int |
|
|
|
// 读取对象内容 |
|
|
|
for { |
|
|
|
readCount, readErr = body.Read(p) |
|
|
|
if readCount > 0 { |
|
|
|
ctx.Resp.Write(p[:readCount]) |
|
|
|
//fmt.Printf("%s", p[:readCount]) |
|
|
|
} |
|
|
|
if readErr != nil { |
|
|
|
break |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
url, err := storage.GetObsCreateSignedUrlByBucketAndKey(setting.Bucket, path) |
|
|
|
if err != nil { |
|
|
|
log.Error("GetObsCreateSignedUrl failed: %v", err.Error(), ctx.Data["msgID"]) |
|
|
|
ctx.ServerError("GetObsCreateSignedUrl", err) |
|
|
|
return |
|
|
|
} |
|
|
|
//count++ |
|
|
|
// models.ModifyModelDownloadCount(id) |
|
|
|
http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently) |
|
|
|
} |
|
|
|
} |