diff --git a/models/dataset.go b/models/dataset.go index 1a52adf71..d1b3d2c32 100644 --- a/models/dataset.go +++ b/models/dataset.go @@ -270,6 +270,22 @@ func GetDatasetByID(id int64) (*Dataset, error) { return rel, nil } +func GetDatasetByRepo(repo *Repository) (*Dataset, error) { + if err := CreateDefaultDatasetToRepo(repo); err != nil { + return nil, err + } + dataset := &Dataset{RepoID: repo.ID} + has, err := x.Get(dataset) + if err != nil { + return nil, err + } + if has { + return dataset, nil + } else { + return nil, errors.New("Not Found") + } +} + func DeleteDataset(datasetID int64, uid int64) error { var err error sess := x.NewSession() diff --git a/routers/repo/dataset.go b/routers/repo/dataset.go index 2206a83ec..8be5fa878 100644 --- a/routers/repo/dataset.go +++ b/routers/repo/dataset.go @@ -6,7 +6,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/modules/setting" ) const ( @@ -24,62 +23,42 @@ func MustEnableDataset(ctx *context.Context) { func DatasetIndex(ctx *context.Context) { MustEnableDataset(ctx) - var orderBy models.SearchOrderBy repo := ctx.Repo.Repository - // user := ctx.User - page := ctx.QueryInt("page") - if page <= 0 { - page = 1 - } - ctx.Data["SortType"] = ctx.Query("sort") - switch ctx.Query("sort") { - case "newest": - orderBy = models.SearchOrderByNewest - case "oldest": - orderBy = models.SearchOrderByOldest - case "recentupdate": - orderBy = models.SearchOrderByRecentUpdated - case "leastupdate": - orderBy = models.SearchOrderByLeastUpdated - case "reversealphabetically": - orderBy = models.SearchOrderByAlphabeticallyReverse - case "alphabetically": - orderBy = models.SearchOrderByAlphabetically - case "reversesize": - orderBy = models.SearchOrderBySizeReverse - default: - ctx.Data["SortType"] = "recentupdate" - orderBy = models.SearchOrderByRecentUpdated - } - ctx.Data["PageIsDataset"] = true - ctx.Data["Title"] = ctx.Tr("dataset.show_dataset") - ctx.Data["Link"] = ctx.Repo.RepoLink + "/datasets" - datasets, _, err := models.SearchDataset(&models.SearchDatasetOptions{ - ListOptions: models.ListOptions{ - Page: page, - PageSize: setting.UI.ExplorePagingNum, - }, - SearchOrderBy: orderBy, - RepoID: repo.ID, - }) + + dataset, err := models.GetDatasetByRepo(repo) if err != nil { - ctx.NotFound("SearchDataset", err) + ctx.NotFound("GetDatasetByRepo", err) return } - - var dataset *models.Dataset - if len(datasets) > 0 { //TODO check list is single item - dataset = datasets[len(datasets)-1] - err = models.GetDatasetAttachments(dataset) - if err != nil { - ctx.ServerError("GetDatasetAttachments", err) - return - } + err = models.GetDatasetAttachments(dataset) + if err != nil { + ctx.ServerError("GetDatasetAttachments", err) + return } - // TODO permission - // isOwner := (ctx.User != nil && dataset.UserID == user.ID) + // var orderBy models.SearchOrderBy + // page := ctx.QueryInt("page") + // if page <= 0 { + // page = 1 + // } + // ctx.Data["SortType"] = ctx.Query("sort") + // switch ctx.Query("sort") { + // case "newest": + // orderBy = models.SearchOrderByNewest + // case "oldest": + // orderBy = models.SearchOrderByOldest + // case "recentupdate": + // orderBy = models.SearchOrderByRecentUpdated + // case "leastupdate": + // orderBy = models.SearchOrderByLeastUpdated + // default: + // ctx.Data["SortType"] = "recentupdate" + // orderBy = models.SearchOrderByRecentUpdated + // } + ctx.Data["PageIsDataset"] = true + ctx.Data["Title"] = ctx.Tr("dataset.show_dataset") + ctx.Data["Link"] = ctx.Repo.RepoLink + "/datasets" ctx.Data["dataset"] = dataset ctx.Data["IsOwner"] = true diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 85c5ded85..aaa5757b1 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -541,6 +541,8 @@ func RegisterRoutes(m *macaron.Macaron) { reqRepoPullsReader := context.RequireRepoReader(models.UnitTypePullRequests) reqRepoIssuesOrPullsWriter := context.RequireRepoWriterOr(models.UnitTypeIssues, models.UnitTypePullRequests) reqRepoIssuesOrPullsReader := context.RequireRepoReaderOr(models.UnitTypeIssues, models.UnitTypePullRequests) + reqRepoDatasetReader := context.RequireRepoReader(models.UnitTypeDatasets) + reqRepoDatasetWriter := context.RequireRepoWriter(models.UnitTypeDatasets) // ***** START: Organization ***** m.Group("/org", func() { @@ -764,8 +766,8 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("/resolve_conversation", reqRepoIssuesOrPullsReader, repo.UpdateResolveConversation) }, context.RepoMustNotBeArchived()) m.Group("/datasets", func() { - m.Get("", repo.DatasetIndex) - m.Post("", bindIgnErr(auth.EditDatasetForm{}), repo.EditDatasetPost) + m.Get("", reqRepoDatasetReader, repo.DatasetIndex) + m.Post("", reqRepoDatasetWriter, bindIgnErr(auth.EditDatasetForm{}), repo.EditDatasetPost) }, context.RepoMustNotBeArchived()) m.Group("/comments/:id", func() { m.Post("", repo.UpdateCommentContent) diff --git a/templates/repo/datasets/dataset_list.tmpl b/templates/repo/datasets/dataset_list.tmpl index b94ecf8cf..df626c985 100644 --- a/templates/repo/datasets/dataset_list.tmpl +++ b/templates/repo/datasets/dataset_list.tmpl @@ -26,9 +26,11 @@ + {{if $.Permission.CanWrite $.UnitTypeDatasets}}
删除
+ {{end}} {{end}} diff --git a/templates/repo/datasets/index.tmpl b/templates/repo/datasets/index.tmpl index 84c8fc610..afa33263b 100644 --- a/templates/repo/datasets/index.tmpl +++ b/templates/repo/datasets/index.tmpl @@ -12,11 +12,13 @@ {{.dataset.Description}} + {{if .Permission.CanWrite $.UnitTypeDatasets}}
{{.i18n.Tr "dataset.edit"}}
+ {{end}}
@@ -63,9 +65,11 @@
+ {{if .Permission.CanWrite $.UnitTypeDatasets}}
{{template "repo/datasets/dataset" .}}
+ {{end}}