#248 创建云脑任务后端生成的默认任务名可能违反约束,可能导致云脑任务创建失败#245 #92

Merged
lewis merged 4 commits from fix-92 into V202108 2 years ago
  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"
"os"
"os/exec"
"regexp"
"strconv"
"strings"
"time"
@@ -86,11 +87,17 @@ func cutString(str string, lens int) string {
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) {
ctx.Data["PageIsCloudBrain"] = true

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

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

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

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>
</div>

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

<div class="inline required field">
<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 class="inline required field">
<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 class="inline required field">
<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 class="inline required field cloudbrain_benchmark">
<label>benchmark脚本存放路径</label>
@@ -217,13 +218,15 @@

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

</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" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></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"
}

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


Loading…
Cancel
Save