diff --git a/models/repo/repo.go b/models/repo/repo.go
index a7bc4b3c72..b24e5c1dbf 100644
--- a/models/repo/repo.go
+++ b/models/repo/repo.go
@@ -439,6 +439,31 @@ func (repo *Repository) GetUnit(ctx context.Context, tp unit.Type) (*RepoUnit, e
 	return nil, ErrUnitTypeNotExist{tp}
 }
 
+// AllUnitsEnabled returns true if all units are enabled for the repo.
+func (repo *Repository) AllUnitsEnabled(ctx context.Context) bool {
+	hasAnyUnitEnabled := func(unitGroup []unit.Type) bool {
+		// Loop over the group of units
+		for _, unit := range unitGroup {
+			// If *any* of them is enabled, return true.
+			if repo.UnitEnabled(ctx, unit) {
+				return true
+			}
+		}
+
+		// If none are enabled, return false.
+		return false
+	}
+
+	for _, unitGroup := range unit.AllowedRepoUnitGroups {
+		// If any disabled unit is found, return false immediately.
+		if !hasAnyUnitEnabled(unitGroup) {
+			return false
+		}
+	}
+
+	return true
+}
+
 // LoadOwner loads owner user
 func (repo *Repository) LoadOwner(ctx context.Context) (err error) {
 	if repo.Owner != nil {
diff --git a/modules/context/repo.go b/modules/context/repo.go
index 8e8a42b695..9d63f9eec3 100644
--- a/modules/context/repo.go
+++ b/modules/context/repo.go
@@ -82,31 +82,6 @@ func (r *Repository) CanCreateBranch() bool {
 	return r.Permission.CanWrite(unit_model.TypeCode) && r.Repository.CanCreateBranch()
 }
 
-// AllUnitsEnabled returns true if all units are enabled for the repo.
-func (r *Repository) AllUnitsEnabled(ctx context.Context) bool {
-	hasAnyUnitEnabled := func(unitGroup []unit_model.Type) bool {
-		// Loop over the group of units
-		for _, unit := range unitGroup {
-			// If *any* of them is enabled, return true.
-			if r.Repository.UnitEnabled(ctx, unit) {
-				return true
-			}
-		}
-
-		// If none are enabled, return false.
-		return false
-	}
-
-	for _, unitGroup := range unit_model.AllowedRepoUnitGroups {
-		// If any disabled unit is found, return false immediately.
-		if !hasAnyUnitEnabled(unitGroup) {
-			return false
-		}
-	}
-
-	return true
-}
-
 // RepoMustNotBeArchived checks if a repo is archived
 func RepoMustNotBeArchived() func(ctx *Context) {
 	return func(ctx *Context) {
@@ -1079,7 +1054,6 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context
 		ctx.Data["IsViewTag"] = ctx.Repo.IsViewTag
 		ctx.Data["IsViewCommit"] = ctx.Repo.IsViewCommit
 		ctx.Data["CanCreateBranch"] = ctx.Repo.CanCreateBranch()
-		ctx.Data["AllUnitsEnabled"] = ctx.Repo.AllUnitsEnabled(ctx)
 
 		ctx.Repo.CommitsCount, err = ctx.Repo.GetCommitsCount()
 		if err != nil {
diff --git a/templates/repo/header.tmpl b/templates/repo/header.tmpl
index 086ffd85ff..2a3167f982 100644
--- a/templates/repo/header.tmpl
+++ b/templates/repo/header.tmpl
@@ -219,7 +219,7 @@
 				{{end}}
 
 				{{if .Permission.IsAdmin}}
-					{{if not .AllUnitsEnabled}}
+					{{if not (.Repository.AllUnitsEnabled ctx)}}
 						<a class="{{if .PageIsRepoSettingsUnits}}active {{end}}item" href="{{.RepoLink}}/settings/units">
 							{{svg "octicon-diff-added"}} {{ctx.Locale.Tr "repo.settings.units.add_more"}}
 						</a>