| @@ -725,7 +725,7 @@ dataset_setting= Dataset Setting | |||||
| title = Name | title = Name | ||||
| title_format_err=Name can only contain number,letter,'-','_' or '.', and can be up to 100 characters long. | title_format_err=Name can only contain number,letter,'-','_' or '.', and can be up to 100 characters long. | ||||
| description = Description | description = Description | ||||
| description_format_err=Description's length can be up to 1024 characters long. | |||||
| description_format_err=Description's length can be up to %s characters long. | |||||
| create_dataset = Create Dataset | create_dataset = Create Dataset | ||||
| create_dataset_fail=Failed to create dataset. | create_dataset_fail=Failed to create dataset. | ||||
| query_dataset_fail=Failed to query dataset. | query_dataset_fail=Failed to query dataset. | ||||
| @@ -920,11 +920,6 @@ image_delete_fail=Failed to delete image, please try again later. | |||||
| download=Download | download=Download | ||||
| score=Score | score=Score | ||||
| images.name = Image Name | |||||
| images.name_placerholder = Please enter the image name | |||||
| image.label_tooltips = Example Python 3.7, Tensorflow 2.0, cuda 10, pytorch 1.6 | |||||
| images.public_tooltips = After the image is set to public, it can be seen by other users. | |||||
| cloudbrain=Cloudbrain | cloudbrain=Cloudbrain | ||||
| cloudbrain.new=New cloudbrain | cloudbrain.new=New cloudbrain | ||||
| cloudbrain.desc=Cloudbrain | cloudbrain.desc=Cloudbrain | ||||
| @@ -728,7 +728,7 @@ dataset_setting=数据集设置 | |||||
| title=名称 | title=名称 | ||||
| title_format_err=名称最多允许输入100个字符,只允许字母,数字,中划线 (‘-’),下划线 (‘_’) 和点 (‘.’) 。 | title_format_err=名称最多允许输入100个字符,只允许字母,数字,中划线 (‘-’),下划线 (‘_’) 和点 (‘.’) 。 | ||||
| description=描述 | description=描述 | ||||
| description_format_err=描述最多允许输入1024个字符。 | |||||
| description_format_err=描述最多允许输入%s个字符。 | |||||
| create_dataset=创建数据集 | create_dataset=创建数据集 | ||||
| create_dataset_fail=创建数据集失败。 | create_dataset_fail=创建数据集失败。 | ||||
| query_dataset_fail=查询数据集失败。 | query_dataset_fail=查询数据集失败。 | ||||
| @@ -2,11 +2,9 @@ package repo | |||||
| import ( | import ( | ||||
| "bufio" | "bufio" | ||||
| "code.gitea.io/gitea/modules/timeutil" | |||||
| "encoding/json" | "encoding/json" | ||||
| "errors" | "errors" | ||||
| "fmt" | "fmt" | ||||
| "github.com/unknwon/i18n" | |||||
| "io" | "io" | ||||
| "net/http" | "net/http" | ||||
| "os" | "os" | ||||
| @@ -15,6 +13,10 @@ import ( | |||||
| "strconv" | "strconv" | ||||
| "strings" | "strings" | ||||
| "time" | "time" | ||||
| "unicode/utf8" | |||||
| "code.gitea.io/gitea/modules/timeutil" | |||||
| "github.com/unknwon/i18n" | |||||
| "code.gitea.io/gitea/models" | "code.gitea.io/gitea/models" | ||||
| "code.gitea.io/gitea/modules/auth" | "code.gitea.io/gitea/modules/auth" | ||||
| @@ -470,12 +472,17 @@ func CloudBrainImageEdit(ctx *context.Context) { | |||||
| ctx.NotFound(ctx.Req.URL.RequestURI(), nil) | ctx.NotFound(ctx.Req.URL.RequestURI(), nil) | ||||
| } | } | ||||
| ctx.Data["Image"] = image | ctx.Data["Image"] = image | ||||
| ctx.HTML(http.StatusOK, tplCloudBrainImageSubmit) | |||||
| ctx.HTML(http.StatusOK, tplCloudBrainImageEdit) | |||||
| } | } | ||||
| } | } | ||||
| func CloudBrainImageEditPost(ctx *context.Context, form auth.EditImageCloudBrainForm) { | func CloudBrainImageEditPost(ctx *context.Context, form auth.EditImageCloudBrainForm) { | ||||
| if utf8.RuneCountInString(form.Description) > 255 { | |||||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.description_format_err", 255))) | |||||
| return | |||||
| } | |||||
| validTopics, errMessage := checkTopics(form.Topics) | validTopics, errMessage := checkTopics(form.Topics) | ||||
| if errMessage != "" { | if errMessage != "" { | ||||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr(errMessage))) | ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr(errMessage))) | ||||
| @@ -529,6 +536,16 @@ func CloudBrainImageDelete(ctx *context.Context) { | |||||
| func CloudBrainCommitImage(ctx *context.Context, form auth.CommitImageCloudBrainForm) { | func CloudBrainCommitImage(ctx *context.Context, form auth.CommitImageCloudBrainForm) { | ||||
| if !NamePattern.MatchString(form.Tag) { | |||||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.title_format_err"))) | |||||
| return | |||||
| } | |||||
| if utf8.RuneCountInString(form.Description) > 255 { | |||||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.description_format_err", 255))) | |||||
| return | |||||
| } | |||||
| validTopics, errMessage := checkTopics(form.Topics) | validTopics, errMessage := checkTopics(form.Topics) | ||||
| if errMessage != "" { | if errMessage != "" { | ||||
| ctx.JSON(http.StatusOK, ctx.Tr(errMessage)) | ctx.JSON(http.StatusOK, ctx.Tr(errMessage)) | ||||
| @@ -4,7 +4,6 @@ import ( | |||||
| "encoding/json" | "encoding/json" | ||||
| "fmt" | "fmt" | ||||
| "net/http" | "net/http" | ||||
| "regexp" | |||||
| "sort" | "sort" | ||||
| "strconv" | "strconv" | ||||
| "strings" | "strings" | ||||
| @@ -25,8 +24,6 @@ const ( | |||||
| taskstplIndex base.TplName = "repo/datasets/tasks/index" | taskstplIndex base.TplName = "repo/datasets/tasks/index" | ||||
| ) | ) | ||||
| var titlePattern = regexp.MustCompile(`^[A-Za-z0-9-_\\.]{1,100}$`) | |||||
| // MustEnableDataset check if repository enable internal dataset | // MustEnableDataset check if repository enable internal dataset | ||||
| func MustEnableDataset(ctx *context.Context) { | func MustEnableDataset(ctx *context.Context) { | ||||
| if !ctx.Repo.CanRead(models.UnitTypeDatasets) { | if !ctx.Repo.CanRead(models.UnitTypeDatasets) { | ||||
| @@ -211,12 +208,12 @@ func CreateDatasetPost(ctx *context.Context, form auth.CreateDatasetForm) { | |||||
| dataset := &models.Dataset{} | dataset := &models.Dataset{} | ||||
| if !titlePattern.MatchString(form.Title) { | |||||
| if !NamePattern.MatchString(form.Title) { | |||||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.title_format_err"))) | ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.title_format_err"))) | ||||
| return | return | ||||
| } | } | ||||
| if utf8.RuneCountInString(form.Description) > 1024 { | if utf8.RuneCountInString(form.Description) > 1024 { | ||||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.description_format_err"))) | |||||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.description_format_err", 1024))) | |||||
| return | return | ||||
| } | } | ||||
| @@ -248,12 +245,12 @@ func EditDatasetPost(ctx *context.Context, form auth.EditDatasetForm) { | |||||
| ctx.Data["Title"] = ctx.Tr("dataset.edit_dataset") | ctx.Data["Title"] = ctx.Tr("dataset.edit_dataset") | ||||
| if !titlePattern.MatchString(form.Title) { | |||||
| if !NamePattern.MatchString(form.Title) { | |||||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.title_format_err"))) | ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.title_format_err"))) | ||||
| return | return | ||||
| } | } | ||||
| if utf8.RuneCountInString(form.Description) > 1024 { | if utf8.RuneCountInString(form.Description) > 1024 { | ||||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.description_format_err"))) | |||||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.description_format_err", 1024))) | |||||
| return | return | ||||
| } | } | ||||
| @@ -0,0 +1,5 @@ | |||||
| package repo | |||||
| import "regexp" | |||||
| var NamePattern = regexp.MustCompile(`^[A-Za-z0-9-_\\.]{1,100}$`) | |||||