From 6589ccbeba87720b1c317c4856491bea6cda5169 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sun, 5 Jan 2020 08:20:44 +0100 Subject: [PATCH 1/7] fix --- models/repo_list.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/repo_list.go b/models/repo_list.go index 34fac8b05531d..e3f1c2c7581df 100644 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -228,7 +228,7 @@ func SearchRepository(opts *SearchRepoOptions) (RepositoryList, int64, error) { } if opts.AllPublic { - accessCond = accessCond.Or(builder.Eq{"is_private": false}) + accessCond = accessCond.Or(builder.Eq{"is_private": false}).And(builder.In("owner_id", builder.Select("id").From("user").Where(builder.Lte{"visibility": 1}))) } cond = cond.And(accessCond) From e1db03b10344f1f09d33344acabfc624d02d0595 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sun, 5 Jan 2020 08:24:09 +0100 Subject: [PATCH 2/7] correct TEST --- models/repo_list_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/repo_list_test.go b/models/repo_list_test.go index a1eed18b83abd..306d2ea68d2b6 100644 --- a/models/repo_list_test.go +++ b/models/repo_list_test.go @@ -178,7 +178,7 @@ func TestSearchRepository(t *testing.T) { count: 25}, {name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborative", opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true, Template: util.OptionalBoolFalse}, - count: 31}, + count: 30}, {name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborativeByName", opts: &SearchRepoOptions{Keyword: "test", Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true}, count: 15}, From 38a24ba35faf8413786d55f78b686a0f71da0cff Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sun, 5 Jan 2020 09:33:19 +0100 Subject: [PATCH 3/7] Update models/repo_list.go --- models/repo_list.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/repo_list.go b/models/repo_list.go index e3f1c2c7581df..18a702fd701d3 100644 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -228,7 +228,7 @@ func SearchRepository(opts *SearchRepoOptions) (RepositoryList, int64, error) { } if opts.AllPublic { - accessCond = accessCond.Or(builder.Eq{"is_private": false}).And(builder.In("owner_id", builder.Select("id").From("user").Where(builder.Lte{"visibility": 1}))) + accessCond = accessCond.Or(builder.Eq{"is_private": false}).And(builder.In("owner_id", builder.Select("user.id").From("user").Where(builder.Lte{"user.visibility": 1}))) } cond = cond.And(accessCond) From b689efbd945c157f783b42703a784b00a4116a9e Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sun, 5 Jan 2020 10:08:36 +0100 Subject: [PATCH 4/7] try to fix --- models/repo_list.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/repo_list.go b/models/repo_list.go index 18a702fd701d3..af938d5289147 100644 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -228,7 +228,7 @@ func SearchRepository(opts *SearchRepoOptions) (RepositoryList, int64, error) { } if opts.AllPublic { - accessCond = accessCond.Or(builder.Eq{"is_private": false}).And(builder.In("owner_id", builder.Select("user.id").From("user").Where(builder.Lte{"user.visibility": 1}))) + accessCond = accessCond.Or(builder.Eq{"is_private": false}).And(builder.In("owner_id", builder.Select("`user`.id").From("`user`").Where(builder.Lte{"`user`.visibility": 1}))) } cond = cond.And(accessCond) From 9df93828458961c52e1d6e98edf58fd9f35984d3 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sun, 5 Jan 2020 10:43:20 +0100 Subject: [PATCH 5/7] use enum instead of hardcoded value --- models/repo_list.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/repo_list.go b/models/repo_list.go index af938d5289147..4af6922ae847a 100644 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -228,7 +228,7 @@ func SearchRepository(opts *SearchRepoOptions) (RepositoryList, int64, error) { } if opts.AllPublic { - accessCond = accessCond.Or(builder.Eq{"is_private": false}).And(builder.In("owner_id", builder.Select("`user`.id").From("`user`").Where(builder.Lte{"`user`.visibility": 1}))) + accessCond = accessCond.Or(builder.Eq{"is_private": false}).And(builder.In("owner_id", builder.Select("`user`.id").From("`user`").Where(builder.Lte{"`user`.visibility": structs.VisibleTypePrivate}))) } cond = cond.And(accessCond) From efa0f5461bf44e07e777ddff1a3978d8355cc169 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sun, 5 Jan 2020 11:25:38 +0100 Subject: [PATCH 6/7] use right enum :) --- models/repo_list.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/repo_list.go b/models/repo_list.go index 4af6922ae847a..c93f700b5dd01 100644 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -228,7 +228,7 @@ func SearchRepository(opts *SearchRepoOptions) (RepositoryList, int64, error) { } if opts.AllPublic { - accessCond = accessCond.Or(builder.Eq{"is_private": false}).And(builder.In("owner_id", builder.Select("`user`.id").From("`user`").Where(builder.Lte{"`user`.visibility": structs.VisibleTypePrivate}))) + accessCond = accessCond.Or(builder.Eq{"is_private": false}).And(builder.In("owner_id", builder.Select("`user`.id").From("`user`").Where(builder.Lte{"`user`.visibility": structs.VisibleTypeLimited}))) } cond = cond.And(accessCond) From ef3e985676e856fde76c669bb9d11a8a69e7d41c Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sun, 5 Jan 2020 13:50:30 +0100 Subject: [PATCH 7/7] new specific Param to include AllLimited Repos --- models/repo_list.go | 9 +++++++-- models/repo_list_test.go | 2 +- routers/home.go | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/models/repo_list.go b/models/repo_list.go index c93f700b5dd01..7b48834dba9e2 100644 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -121,7 +121,8 @@ type SearchRepoOptions struct { StarredByID int64 Page int IsProfile bool - AllPublic bool // Include also all public repositories + AllPublic bool // Include also all public repositories of users and public organisations + AllLimited bool // Include also all public repositories of limited organisations PageSize int // Can be smaller than or equal to setting.ExplorePagingNum // None -> include collaborative AND non-collaborative // True -> include just collaborative @@ -228,7 +229,11 @@ func SearchRepository(opts *SearchRepoOptions) (RepositoryList, int64, error) { } if opts.AllPublic { - accessCond = accessCond.Or(builder.Eq{"is_private": false}).And(builder.In("owner_id", builder.Select("`user`.id").From("`user`").Where(builder.Lte{"`user`.visibility": structs.VisibleTypeLimited}))) + accessCond = accessCond.Or(builder.Eq{"is_private": false}.And(builder.In("owner_id", builder.Select("`user`.id").From("`user`").Where(builder.Eq{"`user`.visibility": structs.VisibleTypePublic})))) + } + + if opts.AllLimited { + accessCond = accessCond.Or(builder.Eq{"is_private": false}.And(builder.In("owner_id", builder.Select("`user`.id").From("`user`").Where(builder.Eq{"`user`.visibility": structs.VisibleTypeLimited})))) } cond = cond.And(accessCond) diff --git a/models/repo_list_test.go b/models/repo_list_test.go index 306d2ea68d2b6..07f84207e2002 100644 --- a/models/repo_list_test.go +++ b/models/repo_list_test.go @@ -177,7 +177,7 @@ func TestSearchRepository(t *testing.T) { opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, AllPublic: true, Template: util.OptionalBoolFalse}, count: 25}, {name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborative", - opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true, Template: util.OptionalBoolFalse}, + opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true, AllLimited: true, Template: util.OptionalBoolFalse}, count: 30}, {name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborativeByName", opts: &SearchRepoOptions{Keyword: "test", Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true}, diff --git a/routers/home.go b/routers/home.go index d223054f4ce3f..773e0f3d6bebb 100644 --- a/routers/home.go +++ b/routers/home.go @@ -142,6 +142,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { Keyword: keyword, OwnerID: opts.OwnerID, AllPublic: true, + AllLimited: true, TopicOnly: topicOnly, IncludeDescription: setting.UI.SearchRepoDescription, })