diff --git a/models/dataset.go b/models/dataset.go index e91adb7d2..0c26f5446 100755 --- a/models/dataset.go +++ b/models/dataset.go @@ -171,16 +171,17 @@ func (datasets DatasetList) loadAttachmentAttributes(opts *SearchDatasetOptions) } type SearchDatasetOptions struct { - Keyword string - OwnerID int64 - User *User - RepoID int64 - IncludePublic bool - RecommendOnly bool - Category string - Task string - License string - DatasetIDs []int64 + Keyword string + OwnerID int64 + User *User + RepoID int64 + IncludePublic bool + RecommendOnly bool + Category string + Task string + License string + DatasetIDs []int64 + ExcludeDatasetId int64 ListOptions SearchOrderBy IsOwner bool @@ -240,6 +241,10 @@ func SearchDatasetCondition(opts *SearchDatasetOptions) builder.Cond { cond = cond.And(builder.Eq{"dataset.repo_id": opts.RepoID}) } + if opts.ExcludeDatasetId > 0 { + cond = cond.And(builder.Neq{"dataset.id": opts.ExcludeDatasetId}) + } + if opts.PublicOnly { cond = cond.And(builder.Eq{"dataset.status": DatasetStatusPublic}) cond = cond.And(builder.Eq{"attachment.is_private": false}) diff --git a/routers/repo/dataset.go b/routers/repo/dataset.go index f047cdaa9..d65a9f2aa 100755 --- a/routers/repo/dataset.go +++ b/routers/repo/dataset.go @@ -529,6 +529,10 @@ func ReferenceDatasetAvailable(ctx *context.Context) { NeedAttachment: false, CloudBrainType: models.TypeCloudBrainAll, } + dataset, _ := models.GetDatasetByRepo(&models.Repository{ID: ctx.Repo.Repository.ID}) + if dataset != nil { + opts.ExcludeDatasetId = dataset.ID + } datasetMultiple(ctx, opts) }