mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:06:18 +01:00 
			
		
		
		
	Hide internal package versions (#20492)
* Hide internal versions from most searches. * Added test.
This commit is contained in:
		| @@ -20,6 +20,7 @@ import ( | ||||
| 	container_module "code.gitea.io/gitea/modules/packages/container" | ||||
| 	"code.gitea.io/gitea/modules/packages/container/oci" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	api "code.gitea.io/gitea/modules/structs" | ||||
|  | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
| @@ -487,6 +488,13 @@ func TestPackageContainer(t *testing.T) { | ||||
| 					assert.Equal(t, c.ExpectedTags, tagList.Tags) | ||||
| 					assert.Equal(t, c.ExpectedLink, resp.Header().Get("Link")) | ||||
| 				} | ||||
|  | ||||
| 				req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/packages/%s?type=container&q=%s", user.Name, image)) | ||||
| 				resp := MakeRequest(t, req, http.StatusOK) | ||||
|  | ||||
| 				var apiPackages []*api.Package | ||||
| 				DecodeJSON(t, resp, &apiPackages) | ||||
| 				assert.Len(t, apiPackages, 4) // "latest", "main", "multi", "sha256:..." | ||||
| 			}) | ||||
|  | ||||
| 			t.Run("Delete", func(t *testing.T) { | ||||
|   | ||||
| @@ -122,8 +122,9 @@ func getVersionByNameAndVersion(ctx context.Context, ownerID int64, packageType | ||||
| // GetVersionsByPackageType gets all versions of a specific type | ||||
| func GetVersionsByPackageType(ctx context.Context, ownerID int64, packageType Type) ([]*PackageVersion, error) { | ||||
| 	pvs, _, err := SearchVersions(ctx, &PackageSearchOptions{ | ||||
| 		OwnerID: ownerID, | ||||
| 		Type:    packageType, | ||||
| 		OwnerID:    ownerID, | ||||
| 		Type:       packageType, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 	}) | ||||
| 	return pvs, err | ||||
| } | ||||
| @@ -137,6 +138,7 @@ func GetVersionsByPackageName(ctx context.Context, ownerID int64, packageType Ty | ||||
| 			ExactMatch: true, | ||||
| 			Value:      name, | ||||
| 		}, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 	}) | ||||
| 	return pvs, err | ||||
| } | ||||
|   | ||||
| @@ -19,6 +19,7 @@ import ( | ||||
| 	packages_module "code.gitea.io/gitea/modules/packages" | ||||
| 	composer_module "code.gitea.io/gitea/modules/packages/composer" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	"code.gitea.io/gitea/routers/api/packages/helper" | ||||
| 	packages_service "code.gitea.io/gitea/services/packages" | ||||
|  | ||||
| @@ -62,10 +63,11 @@ func SearchPackages(ctx *context.Context) { | ||||
| 	} | ||||
|  | ||||
| 	opts := &packages_model.PackageSearchOptions{ | ||||
| 		OwnerID:   ctx.Package.Owner.ID, | ||||
| 		Type:      packages_model.TypeComposer, | ||||
| 		Name:      packages_model.SearchValue{Value: ctx.FormTrim("q")}, | ||||
| 		Paginator: &paginator, | ||||
| 		OwnerID:    ctx.Package.Owner.ID, | ||||
| 		Type:       packages_model.TypeComposer, | ||||
| 		Name:       packages_model.SearchValue{Value: ctx.FormTrim("q")}, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 		Paginator:  &paginator, | ||||
| 	} | ||||
| 	if ctx.FormTrim("type") != "" { | ||||
| 		opts.Properties = map[string]string{ | ||||
|   | ||||
| @@ -19,6 +19,7 @@ import ( | ||||
| 	packages_module "code.gitea.io/gitea/modules/packages" | ||||
| 	helm_module "code.gitea.io/gitea/modules/packages/helm" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	"code.gitea.io/gitea/routers/api/packages/helper" | ||||
| 	packages_service "code.gitea.io/gitea/services/packages" | ||||
|  | ||||
| @@ -39,8 +40,9 @@ func apiError(ctx *context.Context, status int, obj interface{}) { | ||||
| // Index generates the Helm charts index | ||||
| func Index(ctx *context.Context) { | ||||
| 	pvs, _, err := packages_model.SearchVersions(ctx, &packages_model.PackageSearchOptions{ | ||||
| 		OwnerID: ctx.Package.Owner.ID, | ||||
| 		Type:    packages_model.TypeHelm, | ||||
| 		OwnerID:    ctx.Package.Owner.ID, | ||||
| 		Type:       packages_model.TypeHelm, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		apiError(ctx, http.StatusInternalServerError, err) | ||||
| @@ -108,6 +110,7 @@ func DownloadPackageFile(ctx *context.Context) { | ||||
| 			Value:      ctx.Params("package"), | ||||
| 		}, | ||||
| 		HasFileWithName: filename, | ||||
| 		IsInternal:      util.OptionalBoolFalse, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		apiError(ctx, http.StatusInternalServerError, err) | ||||
|   | ||||
| @@ -18,6 +18,7 @@ import ( | ||||
| 	packages_module "code.gitea.io/gitea/modules/packages" | ||||
| 	npm_module "code.gitea.io/gitea/modules/packages/npm" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	"code.gitea.io/gitea/routers/api/packages/helper" | ||||
| 	packages_service "code.gitea.io/gitea/services/packages" | ||||
|  | ||||
| @@ -261,6 +262,7 @@ func setPackageTag(tag string, pv *packages_model.PackageVersion, deleteOnly boo | ||||
| 		Properties: map[string]string{ | ||||
| 			npm_module.TagProperty: tag, | ||||
| 		}, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
|   | ||||
| @@ -17,6 +17,7 @@ import ( | ||||
| 	packages_module "code.gitea.io/gitea/modules/packages" | ||||
| 	nuget_module "code.gitea.io/gitea/modules/packages/nuget" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	"code.gitea.io/gitea/routers/api/packages/helper" | ||||
| 	packages_service "code.gitea.io/gitea/services/packages" | ||||
| ) | ||||
| @@ -39,9 +40,10 @@ func ServiceIndex(ctx *context.Context) { | ||||
| // SearchService https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource#search-for-packages | ||||
| func SearchService(ctx *context.Context) { | ||||
| 	pvs, count, err := packages_model.SearchVersions(ctx, &packages_model.PackageSearchOptions{ | ||||
| 		OwnerID: ctx.Package.Owner.ID, | ||||
| 		Type:    packages_model.TypeNuGet, | ||||
| 		Name:    packages_model.SearchValue{Value: ctx.FormTrim("q")}, | ||||
| 		OwnerID:    ctx.Package.Owner.ID, | ||||
| 		Type:       packages_model.TypeNuGet, | ||||
| 		Name:       packages_model.SearchValue{Value: ctx.FormTrim("q")}, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 		Paginator: db.NewAbsoluteListOptions( | ||||
| 			ctx.FormInt("skip"), | ||||
| 			ctx.FormInt("take"), | ||||
|   | ||||
| @@ -16,6 +16,7 @@ import ( | ||||
| 	"code.gitea.io/gitea/modules/context" | ||||
| 	packages_module "code.gitea.io/gitea/modules/packages" | ||||
| 	rubygems_module "code.gitea.io/gitea/modules/packages/rubygems" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	"code.gitea.io/gitea/routers/api/packages/helper" | ||||
| 	packages_service "code.gitea.io/gitea/services/packages" | ||||
| ) | ||||
| @@ -40,8 +41,9 @@ func EnumeratePackages(ctx *context.Context) { | ||||
| // EnumeratePackagesLatest serves the list of the latest version of every package | ||||
| func EnumeratePackagesLatest(ctx *context.Context) { | ||||
| 	pvs, _, err := packages_model.SearchLatestVersions(ctx, &packages_model.PackageSearchOptions{ | ||||
| 		OwnerID: ctx.Package.Owner.ID, | ||||
| 		Type:    packages_model.TypeRubyGems, | ||||
| 		OwnerID:    ctx.Package.Owner.ID, | ||||
| 		Type:       packages_model.TypeRubyGems, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		apiError(ctx, http.StatusInternalServerError, err) | ||||
| @@ -289,6 +291,7 @@ func getVersionsByFilename(ctx *context.Context, filename string) ([]*packages_m | ||||
| 		OwnerID:         ctx.Package.Owner.ID, | ||||
| 		Type:            packages_model.TypeRubyGems, | ||||
| 		HasFileWithName: filename, | ||||
| 		IsInternal:      util.OptionalBoolFalse, | ||||
| 	}) | ||||
| 	return pvs, err | ||||
| } | ||||
|   | ||||
| @@ -11,6 +11,7 @@ import ( | ||||
| 	"code.gitea.io/gitea/modules/context" | ||||
| 	"code.gitea.io/gitea/modules/convert" | ||||
| 	api "code.gitea.io/gitea/modules/structs" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	"code.gitea.io/gitea/routers/api/v1/utils" | ||||
| 	packages_service "code.gitea.io/gitea/services/packages" | ||||
| ) | ||||
| @@ -55,10 +56,11 @@ func ListPackages(ctx *context.APIContext) { | ||||
| 	query := ctx.FormTrim("q") | ||||
|  | ||||
| 	pvs, count, err := packages.SearchVersions(ctx, &packages.PackageSearchOptions{ | ||||
| 		OwnerID:   ctx.Package.Owner.ID, | ||||
| 		Type:      packages.Type(packageType), | ||||
| 		Name:      packages.SearchValue{Value: query}, | ||||
| 		Paginator: &listOptions, | ||||
| 		OwnerID:    ctx.Package.Owner.ID, | ||||
| 		Type:       packages.Type(packageType), | ||||
| 		Name:       packages.SearchValue{Value: query}, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 		Paginator:  &listOptions, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		ctx.Error(http.StatusInternalServerError, "SearchVersions", err) | ||||
|   | ||||
| @@ -13,6 +13,7 @@ import ( | ||||
| 	"code.gitea.io/gitea/modules/base" | ||||
| 	"code.gitea.io/gitea/modules/context" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	packages_service "code.gitea.io/gitea/services/packages" | ||||
| ) | ||||
|  | ||||
| @@ -31,9 +32,10 @@ func Packages(ctx *context.Context) { | ||||
| 	sort := ctx.FormTrim("sort") | ||||
|  | ||||
| 	pvs, total, err := packages_model.SearchVersions(ctx, &packages_model.PackageSearchOptions{ | ||||
| 		Type: packages_model.Type(packageType), | ||||
| 		Name: packages_model.SearchValue{Value: query}, | ||||
| 		Sort: sort, | ||||
| 		Type:       packages_model.Type(packageType), | ||||
| 		Name:       packages_model.SearchValue{Value: query}, | ||||
| 		Sort:       sort, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 		Paginator: &db.ListOptions{ | ||||
| 			PageSize: setting.UI.PackagesPagingNum, | ||||
| 			Page:     page, | ||||
|   | ||||
| @@ -12,6 +12,7 @@ import ( | ||||
| 	"code.gitea.io/gitea/modules/base" | ||||
| 	"code.gitea.io/gitea/modules/context" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| @@ -32,10 +33,11 @@ func Packages(ctx *context.Context) { | ||||
| 			PageSize: setting.UI.PackagesPagingNum, | ||||
| 			Page:     page, | ||||
| 		}, | ||||
| 		OwnerID: ctx.ContextUser.ID, | ||||
| 		RepoID:  ctx.Repo.Repository.ID, | ||||
| 		Type:    packages.Type(packageType), | ||||
| 		Name:    packages.SearchValue{Value: query}, | ||||
| 		OwnerID:    ctx.ContextUser.ID, | ||||
| 		RepoID:     ctx.Repo.Repository.ID, | ||||
| 		Type:       packages.Type(packageType), | ||||
| 		Name:       packages.SearchValue{Value: query}, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		ctx.ServerError("SearchLatestVersions", err) | ||||
|   | ||||
| @@ -17,6 +17,7 @@ import ( | ||||
| 	"code.gitea.io/gitea/modules/context" | ||||
| 	"code.gitea.io/gitea/modules/log" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	"code.gitea.io/gitea/modules/web" | ||||
| 	"code.gitea.io/gitea/services/forms" | ||||
| 	packages_service "code.gitea.io/gitea/services/packages" | ||||
| @@ -43,9 +44,10 @@ func ListPackages(ctx *context.Context) { | ||||
| 			PageSize: setting.UI.PackagesPagingNum, | ||||
| 			Page:     page, | ||||
| 		}, | ||||
| 		OwnerID: ctx.ContextUser.ID, | ||||
| 		Type:    packages_model.Type(packageType), | ||||
| 		Name:    packages_model.SearchValue{Value: query}, | ||||
| 		OwnerID:    ctx.ContextUser.ID, | ||||
| 		Type:       packages_model.Type(packageType), | ||||
| 		Name:       packages_model.SearchValue{Value: query}, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		ctx.ServerError("SearchLatestVersions", err) | ||||
| @@ -112,7 +114,8 @@ func RedirectToLastVersion(ctx *context.Context) { | ||||
| 	} | ||||
|  | ||||
| 	pvs, _, err := packages_model.SearchLatestVersions(ctx, &packages_model.PackageSearchOptions{ | ||||
| 		PackageID: p.ID, | ||||
| 		PackageID:  p.ID, | ||||
| 		IsInternal: util.OptionalBoolFalse, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		ctx.ServerError("GetPackageByName", err) | ||||
| @@ -157,8 +160,9 @@ func ViewPackageVersion(ctx *context.Context) { | ||||
| 		}) | ||||
| 	default: | ||||
| 		pvs, total, err = packages_model.SearchVersions(ctx, &packages_model.PackageSearchOptions{ | ||||
| 			Paginator: db.NewAbsoluteListOptions(0, 5), | ||||
| 			PackageID: pd.Package.ID, | ||||
| 			Paginator:  db.NewAbsoluteListOptions(0, 5), | ||||
| 			PackageID:  pd.Package.ID, | ||||
| 			IsInternal: util.OptionalBoolFalse, | ||||
| 		}) | ||||
| 		if err != nil { | ||||
| 			ctx.ServerError("SearchVersions", err) | ||||
| @@ -254,6 +258,7 @@ func ListPackageVersions(ctx *context.Context) { | ||||
| 				ExactMatch: false, | ||||
| 				Value:      query, | ||||
| 			}, | ||||
| 			IsInternal: util.OptionalBoolFalse, | ||||
| 		}) | ||||
| 		if err != nil { | ||||
| 			ctx.ServerError("SearchVersions", err) | ||||
|   | ||||
| @@ -19,6 +19,7 @@ import ( | ||||
| 	"code.gitea.io/gitea/modules/log" | ||||
| 	"code.gitea.io/gitea/modules/notification" | ||||
| 	packages_module "code.gitea.io/gitea/modules/packages" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	container_service "code.gitea.io/gitea/services/packages/container" | ||||
| ) | ||||
|  | ||||
| @@ -462,7 +463,8 @@ func RemoveAllPackages(ctx context.Context, userID int64) (int, error) { | ||||
| 				PageSize: repo_model.RepositoryListDefaultPageSize, | ||||
| 				Page:     1, | ||||
| 			}, | ||||
| 			OwnerID: userID, | ||||
| 			OwnerID:    userID, | ||||
| 			IsInternal: util.OptionalBoolNone, | ||||
| 		}) | ||||
| 		if err != nil { | ||||
| 			return count, fmt.Errorf("GetOwnedPackages[%d]: %w", userID, err) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user