Fix release counter on API repository info (#10968)
Use the same mechanism as the webpage for calculating the release count Fix #10946
This commit is contained in:
parent
ef89e75d0e
commit
ad31d6b5e8
4 changed files with 25 additions and 7 deletions
|
@ -209,13 +209,31 @@ func getRepo(t *testing.T, repoID int64) *models.Repository {
|
||||||
func TestAPIViewRepo(t *testing.T) {
|
func TestAPIViewRepo(t *testing.T) {
|
||||||
defer prepareTestEnv(t)()
|
defer prepareTestEnv(t)()
|
||||||
|
|
||||||
|
var repo api.Repository
|
||||||
|
|
||||||
req := NewRequest(t, "GET", "/api/v1/repos/user2/repo1")
|
req := NewRequest(t, "GET", "/api/v1/repos/user2/repo1")
|
||||||
resp := MakeRequest(t, req, http.StatusOK)
|
resp := MakeRequest(t, req, http.StatusOK)
|
||||||
|
|
||||||
var repo api.Repository
|
|
||||||
DecodeJSON(t, resp, &repo)
|
DecodeJSON(t, resp, &repo)
|
||||||
assert.EqualValues(t, 1, repo.ID)
|
assert.EqualValues(t, 1, repo.ID)
|
||||||
assert.EqualValues(t, "repo1", repo.Name)
|
assert.EqualValues(t, "repo1", repo.Name)
|
||||||
|
assert.EqualValues(t, 1, repo.Releases)
|
||||||
|
assert.EqualValues(t, 1, repo.OpenIssues)
|
||||||
|
assert.EqualValues(t, 3, repo.OpenPulls)
|
||||||
|
|
||||||
|
req = NewRequest(t, "GET", "/api/v1/repos/user12/repo10")
|
||||||
|
resp = MakeRequest(t, req, http.StatusOK)
|
||||||
|
DecodeJSON(t, resp, &repo)
|
||||||
|
assert.EqualValues(t, 10, repo.ID)
|
||||||
|
assert.EqualValues(t, "repo10", repo.Name)
|
||||||
|
assert.EqualValues(t, 1, repo.OpenPulls)
|
||||||
|
assert.EqualValues(t, 1, repo.Forks)
|
||||||
|
|
||||||
|
req = NewRequest(t, "GET", "/api/v1/repos/user5/repo4")
|
||||||
|
resp = MakeRequest(t, req, http.StatusOK)
|
||||||
|
DecodeJSON(t, resp, &repo)
|
||||||
|
assert.EqualValues(t, 4, repo.ID)
|
||||||
|
assert.EqualValues(t, "repo4", repo.Name)
|
||||||
|
assert.EqualValues(t, 1, repo.Stars)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAPIOrgRepos(t *testing.T) {
|
func TestAPIOrgRepos(t *testing.T) {
|
||||||
|
|
|
@ -166,7 +166,6 @@ type Repository struct {
|
||||||
NumMilestones int `xorm:"NOT NULL DEFAULT 0"`
|
NumMilestones int `xorm:"NOT NULL DEFAULT 0"`
|
||||||
NumClosedMilestones int `xorm:"NOT NULL DEFAULT 0"`
|
NumClosedMilestones int `xorm:"NOT NULL DEFAULT 0"`
|
||||||
NumOpenMilestones int `xorm:"-"`
|
NumOpenMilestones int `xorm:"-"`
|
||||||
NumReleases int `xorm:"-"`
|
|
||||||
|
|
||||||
IsPrivate bool `xorm:"INDEX"`
|
IsPrivate bool `xorm:"INDEX"`
|
||||||
IsEmpty bool `xorm:"INDEX"`
|
IsEmpty bool `xorm:"INDEX"`
|
||||||
|
@ -353,6 +352,8 @@ func (repo *Repository) innerAPIFormat(e Engine, mode AccessMode, isParent bool)
|
||||||
|
|
||||||
repo.mustOwner(e)
|
repo.mustOwner(e)
|
||||||
|
|
||||||
|
numReleases, _ := GetReleaseCountByRepoID(repo.ID, FindReleasesOptions{IncludeDrafts: false, IncludeTags: true})
|
||||||
|
|
||||||
return &api.Repository{
|
return &api.Repository{
|
||||||
ID: repo.ID,
|
ID: repo.ID,
|
||||||
Owner: repo.Owner.APIFormat(),
|
Owner: repo.Owner.APIFormat(),
|
||||||
|
@ -376,7 +377,7 @@ func (repo *Repository) innerAPIFormat(e Engine, mode AccessMode, isParent bool)
|
||||||
Watchers: repo.NumWatches,
|
Watchers: repo.NumWatches,
|
||||||
OpenIssues: repo.NumOpenIssues,
|
OpenIssues: repo.NumOpenIssues,
|
||||||
OpenPulls: repo.NumOpenPulls,
|
OpenPulls: repo.NumOpenPulls,
|
||||||
Releases: repo.NumReleases,
|
Releases: int(numReleases),
|
||||||
DefaultBranch: repo.DefaultBranch,
|
DefaultBranch: repo.DefaultBranch,
|
||||||
Created: repo.CreatedUnix.AsTime(),
|
Created: repo.CreatedUnix.AsTime(),
|
||||||
Updated: repo.UpdatedUnix.AsTime(),
|
Updated: repo.UpdatedUnix.AsTime(),
|
||||||
|
|
|
@ -439,7 +439,7 @@ func RepoAssignment() macaron.Handler {
|
||||||
ctx.Data["RepoExternalIssuesLink"] = unit.ExternalTrackerConfig().ExternalTrackerURL
|
ctx.Data["RepoExternalIssuesLink"] = unit.ExternalTrackerConfig().ExternalTrackerURL
|
||||||
}
|
}
|
||||||
|
|
||||||
count, err := models.GetReleaseCountByRepoID(ctx.Repo.Repository.ID, models.FindReleasesOptions{
|
ctx.Data["NumReleases"], err = models.GetReleaseCountByRepoID(ctx.Repo.Repository.ID, models.FindReleasesOptions{
|
||||||
IncludeDrafts: false,
|
IncludeDrafts: false,
|
||||||
IncludeTags: true,
|
IncludeTags: true,
|
||||||
})
|
})
|
||||||
|
@ -447,7 +447,6 @@ func RepoAssignment() macaron.Handler {
|
||||||
ctx.ServerError("GetReleaseCountByRepoID", err)
|
ctx.ServerError("GetReleaseCountByRepoID", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Repo.Repository.NumReleases = int(count)
|
|
||||||
|
|
||||||
ctx.Data["Title"] = owner.Name + "/" + repo.Name
|
ctx.Data["Title"] = owner.Name + "/" + repo.Name
|
||||||
ctx.Data["Repository"] = repo
|
ctx.Data["Repository"] = repo
|
||||||
|
|
|
@ -117,7 +117,7 @@
|
||||||
|
|
||||||
{{if and (.Permission.CanRead $.UnitTypeReleases) (not .IsEmptyRepo) }}
|
{{if and (.Permission.CanRead $.UnitTypeReleases) (not .IsEmptyRepo) }}
|
||||||
<a class="{{if .PageIsReleaseList}}active{{end}} item" href="{{.RepoLink}}/releases">
|
<a class="{{if .PageIsReleaseList}}active{{end}} item" href="{{.RepoLink}}/releases">
|
||||||
{{svg "octicon-tag" 16}} {{.i18n.Tr "repo.releases"}} <span class="ui {{if not .Repository.NumReleases}}gray{{else}}blue{{end}} small label">{{.Repository.NumReleases}}</span>
|
{{svg "octicon-tag" 16}} {{.i18n.Tr "repo.releases"}} <span class="ui {{if not .NumReleases}}gray{{else}}blue{{end}} small label">{{.NumReleases}}</span>
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
|
|
Reference in a new issue