Skip to content

Commit a950a27

Browse files
committed
Don't display repositories with no milestone and fix tests
1 parent d10fc9e commit a950a27

File tree

3 files changed

+36
-11
lines changed

3 files changed

+36
-11
lines changed

models/repo_list.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,10 @@ type SearchRepoOptions struct {
163163
TopicOnly bool
164164
// include description in keyword search
165165
IncludeDescription bool
166+
// None -> include has milestones AND has no milestone
167+
// True -> include just has milestones
168+
// False -> include just has no milestone
169+
HasMilestones util.OptionalBool
166170
}
167171

168172
//SearchOrderBy is used to sort the result
@@ -294,6 +298,14 @@ func SearchRepositoryCondition(opts *SearchRepoOptions) builder.Cond {
294298
if opts.Actor != nil && opts.Actor.IsRestricted {
295299
cond = cond.And(accessibleRepositoryCondition(opts.Actor))
296300
}
301+
302+
switch opts.HasMilestones {
303+
case util.OptionalBoolTrue:
304+
cond = cond.And(builder.Gt{"num_milestones": 0})
305+
case util.OptionalBoolFalse:
306+
cond = cond.And(builder.Eq{"num_milestones": 0}.Or(builder.IsNull{"num_milestones"}))
307+
}
308+
297309
return cond
298310
}
299311

routers/user/home.go

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,12 @@ func Milestones(ctx *context.Context) {
175175

176176
var (
177177
repoOpts = models.SearchRepoOptions{
178-
Actor: ctxUser,
179-
OwnerID: ctxUser.ID,
180-
Private: true,
181-
AllPublic: false, // Include also all public repositories of users and public organisations
182-
AllLimited: false, // Include also all public repositories of limited organisations
178+
Actor: ctxUser,
179+
OwnerID: ctxUser.ID,
180+
Private: true,
181+
AllPublic: false, // Include also all public repositories of users and public organisations
182+
AllLimited: false, // Include also all public repositories of limited organisations
183+
HasMilestones: util.OptionalBoolTrue, // Just needs display repos has milestones
183184
}
184185

185186
userRepoCond = models.SearchRepositoryCondition(&repoOpts) // all repo condition user could visit
@@ -232,16 +233,15 @@ func Milestones(ctx *context.Context) {
232233
return
233234
}
234235

235-
showRepos, _, err := models.SearchRepositoryByCondition(&repoOpts, userRepoCond, false)
236+
userRepos, _, err := models.SearchRepositoryByCondition(&repoOpts, userRepoCond, false)
236237
if err != nil {
237238
ctx.ServerError("SearchRepositoryByCondition", err)
238239
return
239240
}
240241

241-
sort.Sort(showRepos)
242-
242+
var showRepos = userRepos /*make(models.RepositoryList, 0, len(userRepos))*/
243243
for i := 0; i < len(milestones); {
244-
for _, repo := range showRepos {
244+
for _, repo := range userRepos {
245245
if milestones[i].RepoID == repo.ID {
246246
milestones[i].Repo = repo
247247
break
@@ -253,6 +253,17 @@ func Milestones(ctx *context.Context) {
253253
continue
254254
}
255255

256+
/*var found bool
257+
for _, repo := range showRepos {
258+
if milestones[i].Repo.ID == repo.ID {
259+
found = true
260+
break
261+
}
262+
}
263+
if !found {
264+
showRepos = append(showRepos, milestones[i].Repo)
265+
}*/
266+
256267
milestones[i].RenderedContent = string(markdown.Render([]byte(milestones[i].Content), milestones[i].Repo.Link(), milestones[i].Repo.ComposeMetas()))
257268
if milestones[i].Repo.IsTimetrackerEnabled() {
258269
err := milestones[i].LoadTotalTrackedTime()
@@ -264,6 +275,8 @@ func Milestones(ctx *context.Context) {
264275
i++
265276
}
266277

278+
sort.Sort(showRepos)
279+
267280
milestoneStats, err := models.GetMilestonesStats(repoCond)
268281
if err != nil {
269282
ctx.ServerError("GetMilestoneStats", err)

routers/user/home_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func TestMilestones(t *testing.T) {
4848
assert.EqualValues(t, "furthestduedate", ctx.Data["SortType"])
4949
assert.EqualValues(t, 1, ctx.Data["Total"])
5050
assert.Len(t, ctx.Data["Milestones"], 1)
51-
assert.Len(t, ctx.Data["Repos"], 1)
51+
assert.Len(t, ctx.Data["Repos"], 2) // both repo 42 and 1 have milestones and both are owned by user 2
5252
}
5353

5454
func TestMilestonesForSpecificRepo(t *testing.T) {
@@ -68,5 +68,5 @@ func TestMilestonesForSpecificRepo(t *testing.T) {
6868
assert.EqualValues(t, "furthestduedate", ctx.Data["SortType"])
6969
assert.EqualValues(t, 1, ctx.Data["Total"])
7070
assert.Len(t, ctx.Data["Milestones"], 1)
71-
assert.Len(t, ctx.Data["Repos"], 1)
71+
assert.Len(t, ctx.Data["Repos"], 2) // both repo 42 and 1 have milestones and both are owned by user 2
7272
}

0 commit comments

Comments
 (0)