Browse Source

Merge pull request '创建云脑任务后端生成的默认任务名可能违反约束,可能导致云脑任务创建失败#245' (#248) from fix-92 into V202108

Reviewed-on: https://git.openi.org.cn/OpenI/aiforge/pulls/248
Reviewed-by: lewis <747342561@qq.com>
pull/251/head
lewis 3 years ago
parent
commit
f69cdeee03
3 changed files with 41 additions and 9 deletions
  1. +8
    -1
      routers/repo/cloudbrain.go
  2. +1
    -1
      routers/repo/modelarts.go
  3. +32
    -7
      templates/repo/cloudbrain/new.tmpl

+ 8
- 1
routers/repo/cloudbrain.go View File

@@ -8,6 +8,7 @@ import (
"net/http" "net/http"
"os" "os"
"os/exec" "os/exec"
"regexp"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@@ -86,11 +87,17 @@ func cutString(str string, lens int) string {
return str[:lens] return str[:lens]
} }


func jobNamePrefixValid(s string) string {
lowStr := strings.ToLower(s)
re := regexp.MustCompile(`[^a-z0-9\\.\\-]+`)
return re.ReplaceAllString(lowStr, "")
}

func CloudBrainNew(ctx *context.Context) { func CloudBrainNew(ctx *context.Context) {
ctx.Data["PageIsCloudBrain"] = true ctx.Data["PageIsCloudBrain"] = true


t := time.Now() t := time.Now()
var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:]
var jobName = jobNamePrefixValid(cutString(ctx.User.Name, 5)) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:]
ctx.Data["job_name"] = jobName ctx.Data["job_name"] = jobName


result, err := cloudbrain.GetImages() result, err := cloudbrain.GetImages()


+ 1
- 1
routers/repo/modelarts.go View File

@@ -71,7 +71,7 @@ func ModelArtsNew(ctx *context.Context) {
ctx.Data["PageIsCloudBrain"] = true ctx.Data["PageIsCloudBrain"] = true


t := time.Now() t := time.Now()
var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:]
var jobName = jobNamePrefixValid(cutString(ctx.User.Name, 5)) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:]
ctx.Data["job_name"] = jobName ctx.Data["job_name"] = jobName


attachs, err := models.GetModelArtsUserAttachments(ctx.User.ID) attachs, err := models.GetModelArtsUserAttachments(ctx.User.ID)


+ 32
- 7
templates/repo/cloudbrain/new.tmpl View File

@@ -110,12 +110,13 @@
<div class="rect5"></div> <div class="rect5"></div>
</div> </div>
</div> </div>

<div class="repository"> <div class="repository">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="repository new repo ui middle very relaxed page grid"> <div class="repository new repo ui middle very relaxed page grid">
<div class="column"> <div class="column">
{{template "base/alert" .}} {{template "base/alert" .}}
<form class="ui form" action="{{.Link}}" method="post">
<form id="form_id" class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<h3 class="ui top attached header"> <h3 class="ui top attached header">
{{.i18n.Tr "repo.cloudbrain.new"}} {{.i18n.Tr "repo.cloudbrain.new"}}
@@ -192,15 +193,15 @@


<div class="inline required field"> <div class="inline required field">
<label>数据集存放路径</label> <label>数据集存放路径</label>
<input name="dataset_path" id="cloudbrain_dataset_path" value="{{.dataset_path}}" tabindex="3" autofocus required maxlength="255" readonly="readonly">
<input name="dataset_path" id="cloudbrain_dataset_path" value="{{.dataset_path}}" tabindex="3" disabled autofocus required maxlength="255" readonly="readonly">
</div> </div>
<div class="inline required field"> <div class="inline required field">
<label>模型存放路径</label> <label>模型存放路径</label>
<input name="model_path" id="cloudbrain_model_path" value="{{.model_path}}" tabindex="3" autofocus required maxlength="255" readonly="readonly">
<input name="model_path" id="cloudbrain_model_path" value="{{.model_path}}" tabindex="3" disabled autofocus required maxlength="255" readonly="readonly">
</div> </div>
<div class="inline required field"> <div class="inline required field">
<label>代码存放路径</label> <label>代码存放路径</label>
<input name="code_path" id="cloudbrain_code_path" value="{{.code_path}}" tabindex="3" autofocus required maxlength="255" readonly="readonly">
<input name="code_path" id="cloudbrain_code_path" value="{{.code_path}}" tabindex="3" disabled autofocus required maxlength="255" readonly="readonly">
</div> </div>
<div class="inline required field cloudbrain_benchmark"> <div class="inline required field cloudbrain_benchmark">
<label>benchmark脚本存放路径</label> <label>benchmark脚本存放路径</label>
@@ -217,13 +218,15 @@


<div class="inline field"> <div class="inline field">
<label></label> <label></label>
<button class="ui green button" onclick="showmask()">
<button class="ui green button" >
{{.i18n.Tr "repo.cloudbrain.new"}} {{.i18n.Tr "repo.cloudbrain.new"}}
</button> </button>
<a class="ui button" href="/">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a> <a class="ui button" href="/">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a>
</div> </div>
</div> </div>
</form> </form>

</div> </div>
</div> </div>
</div> </div>
@@ -231,9 +234,31 @@
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" /> <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script> <script>
// 点击按钮后遮罩层显示
function showmask() {

let url_href = window.location.pathname.split('create')[0]
$(".ui.button").attr('href',url_href)
let form = document.getElementById('form_id');
let value_image = $("input[name='image']").val()
console.log("value_image",$("input[name='image']").val())
form.onsubmit = function(e){
let value_task = $("input[name='job_name']").val()
let value_image = $("input[name='image']").val()
let re = /^[a-zA-Z0-9-.]+$/
let flag = re.test(value_task)
if(!flag){
alert("任务名称只能包含字母,数字,'-',和'.'")
return false
}
if(!value_image){
alert("镜像为空")
return false
}
let min_value_task = value_task.toLowerCase()
console.log(min_value_task)
$("input[name='job_name']").attr("value",min_value_task)
document.getElementById("mask").style.display = "block" document.getElementById("mask").style.display = "block"
} }


// 页面加载完毕后遮罩层隐藏 // 页面加载完毕后遮罩层隐藏


Loading…
Cancel
Save