@@ -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() | |||
@@ -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 | |||
@@ -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) | |||
@@ -26,9 +26,11 @@ | |||
</div> | |||
</div> | |||
{{if $.Permission.CanWrite $.UnitTypeDatasets}} | |||
<div class="two wide column right aligned"> | |||
<a class="ui red button mini" href="javascript:void(0)" data-uuid={{.UUID}} data-dataset-delete data-remove-url="{{AppSubUrl}}/attachments/delete" data-csrf="{{$.CsrfToken}}">删除</a> | |||
</div> | |||
{{end}} | |||
</div> | |||
</div> | |||
{{end}} | |||
@@ -12,11 +12,13 @@ | |||
<span class="no-description text-italic">{{.dataset.Description}}</span> | |||
</div> | |||
</div> | |||
{{if .Permission.CanWrite $.UnitTypeDatasets}} | |||
<div class="column right aligned"> | |||
<a class="ui button primary" href="javascript:void(0)" id="dataset-edit"> | |||
{{.i18n.Tr "dataset.edit"}} | |||
</a> | |||
</div> | |||
{{end}} | |||
</div> | |||
<div class="ui grid form segment success {{if not .Error}}hide{{end}}" id="dataset-content-edit"> | |||
@@ -63,9 +65,11 @@ | |||
</div> | |||
<div class="dataset ui middle very relaxed page"> | |||
<div class="column"> | |||
{{if .Permission.CanWrite $.UnitTypeDatasets}} | |||
<form class="ui form" action="{{.Link}}" method="post"> | |||
{{template "repo/datasets/dataset" .}} | |||
</form> | |||
{{end}} | |||
</div> | |||
</div> | |||
</div> | |||