mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08: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