@@ -24,6 +24,8 @@ import (
24
24
"code.gitea.io/gitea/modules/base"
25
25
"code.gitea.io/gitea/modules/context"
26
26
"code.gitea.io/gitea/modules/git"
27
+ "code.gitea.io/gitea/modules/indexer/code"
28
+ "code.gitea.io/gitea/modules/indexer/stats"
27
29
"code.gitea.io/gitea/modules/lfs"
28
30
"code.gitea.io/gitea/modules/log"
29
31
"code.gitea.io/gitea/modules/repository"
@@ -67,6 +69,23 @@ func Settings(ctx *context.Context) {
67
69
signing , _ := asymkey_service .SigningKey (ctx .Repo .Repository .RepoPath ())
68
70
ctx .Data ["SigningKeyAvailable" ] = len (signing ) > 0
69
71
ctx .Data ["SigningSettings" ] = setting .Repository .Signing
72
+ ctx .Data ["CodeIndexerEnabled" ] = setting .Indexer .RepoIndexerEnabled
73
+ if ctx .User .IsAdmin {
74
+ if setting .Indexer .RepoIndexerEnabled {
75
+ status , err := repo_model .GetIndexerStatus (ctx .Repo .Repository , repo_model .RepoIndexerTypeCode )
76
+ if err != nil {
77
+ ctx .ServerError ("repo.indexer_status" , err )
78
+ return
79
+ }
80
+ ctx .Data ["CodeIndexerStatus" ] = status
81
+ }
82
+ status , err := repo_model .GetIndexerStatus (ctx .Repo .Repository , repo_model .RepoIndexerTypeStats )
83
+ if err != nil {
84
+ ctx .ServerError ("repo.indexer_status" , err )
85
+ return
86
+ }
87
+ ctx .Data ["StatsIndexerStatus" ] = status
88
+ }
70
89
pushMirrors , err := repo_model .GetPushMirrorsByRepoID (ctx .Repo .Repository .ID )
71
90
if err != nil {
72
91
ctx .ServerError ("GetPushMirrorsByRepoID" , err )
@@ -515,6 +534,34 @@ func SettingsPost(ctx *context.Context) {
515
534
ctx .Flash .Success (ctx .Tr ("repo.settings.update_settings_success" ))
516
535
ctx .Redirect (ctx .Repo .RepoLink + "/settings" )
517
536
537
+ case "admin_index" :
538
+ if ! ctx .User .IsAdmin {
539
+ ctx .Error (http .StatusForbidden )
540
+ return
541
+ }
542
+
543
+ switch form .RequestReindexType {
544
+ case "stats" :
545
+ if err := stats .UpdateRepoIndexer (ctx .Repo .Repository ); err != nil {
546
+ ctx .ServerError ("UpdateStatsRepondexer" , err )
547
+ return
548
+ }
549
+ case "code" :
550
+ if ! setting .Indexer .RepoIndexerEnabled {
551
+ ctx .Error (http .StatusForbidden )
552
+ return
553
+ }
554
+ code .UpdateRepoIndexer (ctx .Repo .Repository )
555
+ default :
556
+ ctx .NotFound ("" , nil )
557
+ return
558
+ }
559
+
560
+ log .Trace ("Repository reindex for %s requested: %s/%s" , form .RequestReindexType , ctx .Repo .Owner .Name , repo .Name )
561
+
562
+ ctx .Flash .Success (ctx .Tr ("repo.settings.reindex_requested" ))
563
+ ctx .Redirect (ctx .Repo .RepoLink + "/settings" )
564
+
518
565
case "convert" :
519
566
if ! ctx .Repo .IsOwner () {
520
567
ctx .Error (http .StatusNotFound )
0 commit comments