diff --git a/models/blockchain.go b/models/blockchain.go index 00a47969f..484222557 100755 --- a/models/blockchain.go +++ b/models/blockchain.go @@ -91,6 +91,7 @@ func GetBlockChainUnSuccessCommits() ([]*BlockChain, error) { blockChains := make([]*BlockChain, 0, 10) return blockChains, x. Where("status != ?", BlockChainCommitSuccess). + Limit(100). Find(&blockChains) } diff --git a/models/custom_migrations.go b/models/custom_migrations.go new file mode 100644 index 000000000..b196c5a8b --- /dev/null +++ b/models/custom_migrations.go @@ -0,0 +1,36 @@ +package models + +import ( + "code.gitea.io/gitea/modules/log" + "xorm.io/xorm" +) + +type CustomMigration struct { + Description string + Migrate func(*xorm.Engine) error +} + +var customMigrations = []CustomMigration{ + {"Custom v1 Topic struct change to support chinese", syncTopicStruct}, +} + +func MigrateCustom(x *xorm.Engine) { + + for _, m := range customMigrations { + log.Info("Migration: %s", m.Description) + if err := m.Migrate(x); err != nil { + + log.Error("Migration: %v", err) + + } + } + +} + +func syncTopicStruct(x *xorm.Engine) error { + + query := "ALTER TABLE topic ALTER COLUMN name TYPE varchar(105);" + + _, err := x.Exec(query) + return err +} diff --git a/models/models.go b/models/models.go index 0e06c60b3..67892399a 100755 --- a/models/models.go +++ b/models/models.go @@ -185,6 +185,8 @@ func SetEngine() (err error) { x.SetMaxOpenConns(setting.Database.MaxOpenConns) x.SetMaxIdleConns(setting.Database.MaxIdleConns) x.SetConnMaxLifetime(setting.Database.ConnMaxLifetime) + x.Sync2(tables...) + MigrateCustom(x) return nil } diff --git a/models/repo.go b/models/repo.go index be84a462e..f4c396677 100755 --- a/models/repo.go +++ b/models/repo.go @@ -2421,6 +2421,7 @@ func GetBlockChainUnSuccessRepos() ([]*Repository, error) { repos := make([]*Repository, 0, 10) return repos, x. Where("block_chain_status != ?", RepoBlockChainSuccess). + Limit(100). Find(&repos) } diff --git a/models/topic.go b/models/topic.go index 4a5bffa08..b8d3d9d85 100644 --- a/models/topic.go +++ b/models/topic.go @@ -8,6 +8,7 @@ import ( "fmt" "regexp" "strings" + "unicode/utf8" "code.gitea.io/gitea/modules/timeutil" @@ -21,12 +22,12 @@ func init() { ) } -var topicPattern = regexp.MustCompile(`^[a-z0-9][a-z0-9-]*$`) +var topicPattern = regexp.MustCompile(`^[\x{4e00}-\x{9fa5}a-z0-9][\x{4e00}-\x{9fa5}a-z0-9-]*$`) // Topic represents a topic of repositories type Topic struct { ID int64 - Name string `xorm:"UNIQUE VARCHAR(25)"` + Name string `xorm:"UNIQUE VARCHAR(105)"` RepoCount int CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` @@ -56,7 +57,7 @@ func (err ErrTopicNotExist) Error() string { // ValidateTopic checks a topic by length and match pattern rules func ValidateTopic(topic string) bool { - return len(topic) <= 35 && topicPattern.MatchString(topic) + return utf8.RuneCountInString(topic) <= 35 && topicPattern.MatchString(topic) } // SanitizeAndValidateTopics sanitizes and checks an array or topics diff --git a/models/user.go b/models/user.go index 42e688358..83bf1b2c0 100755 --- a/models/user.go +++ b/models/user.go @@ -2047,6 +2047,7 @@ func GetBlockChainUnSuccessUsers() ([]*User, error) { users := make([]*User, 0, 10) err := x.Where("public_key = ''"). Or("private_key = ''"). + Limit(100). Find(&users) return users, err } diff --git a/modules/auth/modelarts.go b/modules/auth/modelarts.go index 11a3bc562..0be3e3882 100755 --- a/modules/auth/modelarts.go +++ b/modules/auth/modelarts.go @@ -7,7 +7,7 @@ import ( type CreateModelArtsForm struct { JobName string `form:"job_name" binding:"Required"` - Attachment string `form:"attachment" binding:"Required"` + Attachment string `form:"attachment"` Description string `form:"description"` } diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index a5cb8388b..edd9d5d6b 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -1,13 +1,13 @@ package modelarts import ( - "code.gitea.io/gitea/modules/setting" - "encoding/json" - "path" - "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/storage" + "encoding/json" + "path" ) const ( @@ -25,7 +25,27 @@ var ( ) func GenerateTask(ctx *context.Context, jobName, uuid, description string) error { - dataActualPath := setting.Bucket + "/" + setting.BasePath + path.Join(uuid[0:1], uuid[1:2]) + "/" + uuid + "/" + var dataActualPath string + if uuid != "" { + dataActualPath = setting.Bucket + "/" + setting.BasePath + path.Join(uuid[0:1], uuid[1:2]) + "/" + uuid + "/" + } else { + userPath := setting.UserBasePath + ctx.User.Name + "/" + isExist, err := storage.ObsHasObject(userPath) + if err != nil { + log.Error("ObsHasObject failed:%v", err.Error(), ctx.Data["MsgID"]) + return err + } + + if !isExist { + if err = storage.ObsCreateObject(userPath); err != nil { + log.Error("ObsCreateObject failed:%v", err.Error(), ctx.Data["MsgID"]) + return err + } + } + + dataActualPath = setting.Bucket + "/" + userPath + } + if poolInfos == nil { json.Unmarshal([]byte(setting.PoolInfos), &poolInfos) } diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 142369f88..687f02605 100755 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -463,7 +463,7 @@ var ( Bucket string Location string BasePath string - //RealPath string + UserBasePath string //modelarts config ModelArtsHost string @@ -473,10 +473,10 @@ var ( ModelArtsUsername string ModelArtsPassword string ModelArtsDomain string - ProfileID string - PoolInfos string - Flavor string - FlavorInfos string + ProfileID string + PoolInfos string + Flavor string + FlavorInfos string ) // DateLang transforms standard language locale name to corresponding value in datetime plugin. @@ -1177,6 +1177,7 @@ func NewContext() { Bucket = sec.Key("BUCKET").MustString("testopendata") Location = sec.Key("LOCATION").MustString("cn-south-222") BasePath = sec.Key("BASE_PATH").MustString("attachment/") + UserBasePath = sec.Key("BASE_PATH_USER").MustString("users/") sec = Cfg.Section("modelarts") ModelArtsHost = sec.Key("ENDPOINT").MustString("112.95.163.80") diff --git a/modules/storage/obs.go b/modules/storage/obs.go index b4de303cf..77fe49b4e 100755 --- a/modules/storage/obs.go +++ b/modules/storage/obs.go @@ -143,3 +143,17 @@ func ObsGetPreSignedUrl(uuid, fileName string) (string, error) { return output.SignedUrl, nil } + +func ObsCreateObject(path string) error { + input := &obs.PutObjectInput{} + input.Bucket = setting.Bucket + input.Key = path + + _, err := ObsCli.PutObject(input) + if err != nil { + log.Error("PutObject failed:", err.Error()) + return err + } + + return nil +} diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 61a233589..56cf564e7 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1815,7 +1815,7 @@ branch.included = Included topic.manage_topics = Manage Topics topic.done = Done topic.count_prompt = You can not select more than 25 topics -topic.format_prompt = Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long. +topic.format_prompt = Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long. [org] org_name_holder = Organization Name diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 89db6536c..31398b927 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -1817,7 +1817,7 @@ branch.included=已包含 topic.manage_topics=管理主题 topic.done=保存 topic.count_prompt=您最多选择25个主题 -topic.format_prompt=主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符 +topic.format_prompt=主题必须以汉字、字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符 [org] org_name_holder=组织名称 diff --git a/templates/repo/modelarts/new.tmpl b/templates/repo/modelarts/new.tmpl index c77a1fe47..5664de181 100755 --- a/templates/repo/modelarts/new.tmpl +++ b/templates/repo/modelarts/new.tmpl @@ -112,14 +112,15 @@ -
+
- + {{range .attachments}} {{end}} - +
diff --git a/web_src/js/index.js b/web_src/js/index.js index 991a13c21..2cc622cc0 100755 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -4113,11 +4113,7 @@ function initTopicbar() { $.fn.form.settings.rules.validateTopic = function (_values, regExp) { const topics = topicDropdown.children('a.ui.label'); const status = - topics.length === 0 || - topics - .last() - .attr('data-value') - .match(regExp); + topics.length === 0 || (topics.last().attr('data-value').match(regExp) !== null && topics.last().attr('data-value').length <= 35); if (!status) { topics .last() @@ -4136,7 +4132,7 @@ function initTopicbar() { rules: [ { type: 'validateTopic', - value: /^[a-z0-9][a-z0-9-]{0,35}$/, + value: /^[\u4e00-\u9fa5a-z0-9][\u4e00-\u9fa5a-z0-9-]{0,105}$/, prompt: topicPrompts.formatPrompt }, { diff --git a/web_src/less/_repository.less b/web_src/less/_repository.less index 9103d7e24..0ffe8d0ee 100644 --- a/web_src/less/_repository.less +++ b/web_src/less/_repository.less @@ -2685,7 +2685,7 @@ tbody.commit-list { width: 1127px; } th .message-wrapper { - max-width: 510px; + max-width: 400px; } }