diff options
author | zeripath <art27@cantab.net> | 2021-12-16 15:55:12 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-16 23:55:12 +0800 |
commit | e0e3ba6c12c4094dfb1ff0dc5f290214cf9bfe54 (patch) | |
tree | 4284180ee25635036097234172f748718cb23bac /routers | |
parent | 3a3cbcfdf077242cf788d8c9a9ac68bd77cb4ff5 (diff) | |
download | gitea-e0e3ba6c12c4094dfb1ff0dc5f290214cf9bfe54.tar.gz gitea-e0e3ba6c12c4094dfb1ff0dc5f290214cf9bfe54.zip |
Add Reindex buttons to repository settings page (#17494)
This PR adds reindexing request buttons to the repository settings page.
Fix #3796
Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'routers')
-rw-r--r-- | routers/web/repo/setting.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/routers/web/repo/setting.go b/routers/web/repo/setting.go index a6b1219954..ff38f61d8b 100644 --- a/routers/web/repo/setting.go +++ b/routers/web/repo/setting.go @@ -24,6 +24,8 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/indexer/code" + "code.gitea.io/gitea/modules/indexer/stats" "code.gitea.io/gitea/modules/lfs" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/repository" @@ -67,6 +69,23 @@ func Settings(ctx *context.Context) { signing, _ := asymkey_service.SigningKey(ctx.Repo.Repository.RepoPath()) ctx.Data["SigningKeyAvailable"] = len(signing) > 0 ctx.Data["SigningSettings"] = setting.Repository.Signing + ctx.Data["CodeIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled + if ctx.User.IsAdmin { + if setting.Indexer.RepoIndexerEnabled { + status, err := repo_model.GetIndexerStatus(ctx.Repo.Repository, repo_model.RepoIndexerTypeCode) + if err != nil { + ctx.ServerError("repo.indexer_status", err) + return + } + ctx.Data["CodeIndexerStatus"] = status + } + status, err := repo_model.GetIndexerStatus(ctx.Repo.Repository, repo_model.RepoIndexerTypeStats) + if err != nil { + ctx.ServerError("repo.indexer_status", err) + return + } + ctx.Data["StatsIndexerStatus"] = status + } pushMirrors, err := repo_model.GetPushMirrorsByRepoID(ctx.Repo.Repository.ID) if err != nil { ctx.ServerError("GetPushMirrorsByRepoID", err) @@ -515,6 +534,34 @@ func SettingsPost(ctx *context.Context) { ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success")) ctx.Redirect(ctx.Repo.RepoLink + "/settings") + case "admin_index": + if !ctx.User.IsAdmin { + ctx.Error(http.StatusForbidden) + return + } + + switch form.RequestReindexType { + case "stats": + if err := stats.UpdateRepoIndexer(ctx.Repo.Repository); err != nil { + ctx.ServerError("UpdateStatsRepondexer", err) + return + } + case "code": + if !setting.Indexer.RepoIndexerEnabled { + ctx.Error(http.StatusForbidden) + return + } + code.UpdateRepoIndexer(ctx.Repo.Repository) + default: + ctx.NotFound("", nil) + return + } + + log.Trace("Repository reindex for %s requested: %s/%s", form.RequestReindexType, ctx.Repo.Owner.Name, repo.Name) + + ctx.Flash.Success(ctx.Tr("repo.settings.reindex_requested")) + ctx.Redirect(ctx.Repo.RepoLink + "/settings") + case "convert": if !ctx.Repo.IsOwner() { ctx.Error(http.StatusNotFound) |