From e5266f280139cd59759fd3a6f006d9262910ef63 Mon Sep 17 00:00:00 2001 From: TerryZhou Date: Wed, 25 Sep 2024 11:34:48 +0800 Subject: [PATCH 1/3] support editing setter return global error --- docs/docsrc/examples/examples_presets/editing.go | 4 ++++ .../docsrc/examples/examples_presets/editing_test.go | 12 ++++++++++++ go.mod | 2 +- go.sum | 6 ++---- presets/field.go | 6 +++++- 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/docs/docsrc/examples/examples_presets/editing.go b/docs/docsrc/examples/examples_presets/editing.go index 1def3a60b..c5bd93c1a 100644 --- a/docs/docsrc/examples/examples_presets/editing.go +++ b/docs/docsrc/examples/examples_presets/editing.go @@ -269,6 +269,10 @@ func PresetsEditingSetter(b *presets.Builder, db *gorm.DB) ( if c.Name == "" { return errors.New("name must not be empty") } + if c.Name == "global" { + return web.ValidationGlobalError(errors.New(`You can not use "global" as name`)) + } + return }) eb.Field("Name").LazyWrapSetterFunc(func(in presets.FieldSetterFunc) presets.FieldSetterFunc { diff --git a/docs/docsrc/examples/examples_presets/editing_test.go b/docs/docsrc/examples/examples_presets/editing_test.go index 1ef84ffaf..93c11a5d2 100644 --- a/docs/docsrc/examples/examples_presets/editing_test.go +++ b/docs/docsrc/examples/examples_presets/editing_test.go @@ -72,6 +72,18 @@ func TestPresetsEditingSetter(t *testing.T) { }, ExpectPortalUpdate0ContainsInOrder: []string{`You can not use \"system\" as name`}, }, + { + Name: "setter return global error", + Debug: true, + ReqFunc: func() *http.Request { + companyData.TruncatePut(SqlDB) + return multipartestutils.NewMultipartBuilder(). + PageURL("/companies?__execute_event__=presets_Update"). + AddField("Name", "global"). + BuildEventFuncRequest() + }, + ExpectPortalUpdate0ContainsInOrder: []string{"You can not use","global" ,"as name"}, + }, } for _, c := range cases { diff --git a/go.mod b/go.mod index cf5551050..c6a6a2b58 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/pquerna/otp v1.4.0 github.com/qor/oss v0.0.0-20240729105053-88484a799a79 github.com/qor5/web v1.3.2 - github.com/qor5/web/v3 v3.0.8 + github.com/qor5/web/v3 v3.0.9-0.20240925032527-e126c3282af2 github.com/qor5/x/v3 v3.0.10-0.20240924033603-390b10c33399 github.com/samber/lo v1.47.0 github.com/shurcooL/sanitized_anchor_name v1.0.0 diff --git a/go.sum b/go.sum index f41ff19f4..a99485001 100644 --- a/go.sum +++ b/go.sum @@ -319,10 +319,8 @@ github.com/qor5/web v1.3.2 h1:zw796YJeDLe8vRwGR1cM+uS1ZuSkPutchBEXv2GgOhI= github.com/qor5/web v1.3.2/go.mod h1:LszskQJbFQDJwOeZC6j6afOiHxxyjrzz8B3zuBwfgKQ= github.com/qor5/web/v3 v3.0.8 h1:Fgr36QtGTK9Sb0YXU705a+oL7UoybfeBQ8FESXnTDSk= github.com/qor5/web/v3 v3.0.8/go.mod h1:32vdHHcZb2JimlcaclW9hLUyimdXjrllZDHTh3rl6d0= -github.com/qor5/x/v3 v3.0.10-0.20240923031926-4715a7497269 h1:4CS1Fug99k+kyjfULtIQ05ROtPcJLQJS9Cr2bX6jedI= -github.com/qor5/x/v3 v3.0.10-0.20240923031926-4715a7497269/go.mod h1:ebg7TORMQLVRlZyDyZbAsxbQoiN4wMBVhyFHdYxv6Tw= -github.com/qor5/x/v3 v3.0.10-0.20240923055518-106596f5c644 h1:J0E/cE5nLtS4/tR9o+eHlww6wvCsxfaS0Tb4Nv024ZU= -github.com/qor5/x/v3 v3.0.10-0.20240923055518-106596f5c644/go.mod h1:ebg7TORMQLVRlZyDyZbAsxbQoiN4wMBVhyFHdYxv6Tw= +github.com/qor5/web/v3 v3.0.9-0.20240925032527-e126c3282af2 h1:M19hKQryK3MM7UQdb9Mwg5y/NO1hjooH9aptPpWWX2w= +github.com/qor5/web/v3 v3.0.9-0.20240925032527-e126c3282af2/go.mod h1:32vdHHcZb2JimlcaclW9hLUyimdXjrllZDHTh3rl6d0= github.com/qor5/x/v3 v3.0.10-0.20240924033603-390b10c33399 h1:+wBQnLFUwkC5UHLXNgJNQwVPLxHBn4iWi01DVuBPC04= github.com/qor5/x/v3 v3.0.10-0.20240924033603-390b10c33399/go.mod h1:ebg7TORMQLVRlZyDyZbAsxbQoiN4wMBVhyFHdYxv6Tw= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= diff --git a/presets/field.go b/presets/field.go index af18dccc0..2d40a2d45 100644 --- a/presets/field.go +++ b/presets/field.go @@ -427,7 +427,11 @@ func (b *FieldsBuilder) SetObjectFields(fromObj interface{}, toObj interface{}, Label: b.getLabel(f.NameLabel), }, ctx) if err1 != nil { - vErr.FieldError(f.name, err1.Error()) + if web.IsValidationGlobalError(err1) { + vErr.GlobalError(err1.Error()) + } else { + vErr.FieldError(f.name, err1.Error()) + } } } return From 1342c9fbf58629ab53cd54dbb7090a1bf66365bf Mon Sep 17 00:00:00 2001 From: "deepsource-autofix[bot]" <62050782+deepsource-autofix[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 03:37:12 +0000 Subject: [PATCH 2/3] style: format code with Gofumpt This commit fixes the style issues introduced in 4f8318c according to the output from Gofumpt. Details: https://github.com/qor5/admin/pull/598 --- docs/docsrc/examples/examples_presets/editing_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docsrc/examples/examples_presets/editing_test.go b/docs/docsrc/examples/examples_presets/editing_test.go index 93c11a5d2..44df185f8 100644 --- a/docs/docsrc/examples/examples_presets/editing_test.go +++ b/docs/docsrc/examples/examples_presets/editing_test.go @@ -82,7 +82,7 @@ func TestPresetsEditingSetter(t *testing.T) { AddField("Name", "global"). BuildEventFuncRequest() }, - ExpectPortalUpdate0ContainsInOrder: []string{"You can not use","global" ,"as name"}, + ExpectPortalUpdate0ContainsInOrder: []string{"You can not use", "global", "as name"}, }, } From 5ffb1802e3051e943109b97e502491a457e9c33d Mon Sep 17 00:00:00 2001 From: TerryZhou Date: Wed, 25 Sep 2024 14:08:02 +0800 Subject: [PATCH 3/3] Try rerun ci --- docs/docsrc/examples/examples_presets/editing.go | 2 +- docs/docsrc/examples/examples_presets/editing_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docsrc/examples/examples_presets/editing.go b/docs/docsrc/examples/examples_presets/editing.go index c5bd93c1a..4eb77cebe 100644 --- a/docs/docsrc/examples/examples_presets/editing.go +++ b/docs/docsrc/examples/examples_presets/editing.go @@ -270,7 +270,7 @@ func PresetsEditingSetter(b *presets.Builder, db *gorm.DB) ( return errors.New("name must not be empty") } if c.Name == "global" { - return web.ValidationGlobalError(errors.New(`You can not use "global" as name`)) + return web.ValidationGlobalError(errors.New(`You can not use global as name`)) } return diff --git a/docs/docsrc/examples/examples_presets/editing_test.go b/docs/docsrc/examples/examples_presets/editing_test.go index 44df185f8..52fd43345 100644 --- a/docs/docsrc/examples/examples_presets/editing_test.go +++ b/docs/docsrc/examples/examples_presets/editing_test.go @@ -82,7 +82,7 @@ func TestPresetsEditingSetter(t *testing.T) { AddField("Name", "global"). BuildEventFuncRequest() }, - ExpectPortalUpdate0ContainsInOrder: []string{"You can not use", "global", "as name"}, + ExpectPortalUpdate0ContainsInOrder: []string{"You can not use global as name"}, }, }