Skip to content

Commit 46226d3

Browse files
authored
Merge branch 'main' into tense-past
2 parents 2a4fe6e + 2902d1e commit 46226d3

File tree

23 files changed

+92
-91
lines changed

23 files changed

+92
-91
lines changed

models/issues/assignees.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ func IsUserAssignedToIssue(ctx context.Context, issue *Issue, user *user_model.U
6363
}
6464

6565
// ToggleIssueAssignee changes a user between assigned and not assigned for this issue, and make issue comment for it.
66-
func ToggleIssueAssignee(issue *Issue, doer *user_model.User, assigneeID int64) (removed bool, comment *Comment, err error) {
67-
ctx, committer, err := db.TxContext(db.DefaultContext)
66+
func ToggleIssueAssignee(ctx context.Context, issue *Issue, doer *user_model.User, assigneeID int64) (removed bool, comment *Comment, err error) {
67+
ctx, committer, err := db.TxContext(ctx)
6868
if err != nil {
6969
return false, nil, err
7070
}

models/issues/assignees_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,17 @@ func TestUpdateAssignee(t *testing.T) {
2424
// Assign multiple users
2525
user2, err := user_model.GetUserByID(db.DefaultContext, 2)
2626
assert.NoError(t, err)
27-
_, _, err = issues_model.ToggleIssueAssignee(issue, &user_model.User{ID: 1}, user2.ID)
27+
_, _, err = issues_model.ToggleIssueAssignee(db.DefaultContext, issue, &user_model.User{ID: 1}, user2.ID)
2828
assert.NoError(t, err)
2929

3030
user3, err := user_model.GetUserByID(db.DefaultContext, 3)
3131
assert.NoError(t, err)
32-
_, _, err = issues_model.ToggleIssueAssignee(issue, &user_model.User{ID: 1}, user3.ID)
32+
_, _, err = issues_model.ToggleIssueAssignee(db.DefaultContext, issue, &user_model.User{ID: 1}, user3.ID)
3333
assert.NoError(t, err)
3434

3535
user1, err := user_model.GetUserByID(db.DefaultContext, 1) // This user is already assigned (see the definition in fixtures), so running UpdateAssignee should unassign him
3636
assert.NoError(t, err)
37-
_, _, err = issues_model.ToggleIssueAssignee(issue, &user_model.User{ID: 1}, user1.ID)
37+
_, _, err = issues_model.ToggleIssueAssignee(db.DefaultContext, issue, &user_model.User{ID: 1}, user1.ID)
3838
assert.NoError(t, err)
3939

4040
// Check if he got removed

models/issues/issue.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -743,8 +743,8 @@ func ChangeIssueStatus(ctx context.Context, issue *Issue, doer *user_model.User,
743743
}
744744

745745
// ChangeIssueTitle changes the title of this issue, as the given user.
746-
func ChangeIssueTitle(issue *Issue, doer *user_model.User, oldTitle string) (err error) {
747-
ctx, committer, err := db.TxContext(db.DefaultContext)
746+
func ChangeIssueTitle(ctx context.Context, issue *Issue, doer *user_model.User, oldTitle string) (err error) {
747+
ctx, committer, err := db.TxContext(ctx)
748748
if err != nil {
749749
return err
750750
}

models/issues/issue_xref_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func TestXRef_NeuterCrossReferences(t *testing.T) {
8383

8484
d := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
8585
i.Title = "title2, no mentions"
86-
assert.NoError(t, issues_model.ChangeIssueTitle(i, d, title))
86+
assert.NoError(t, issues_model.ChangeIssueTitle(db.DefaultContext, i, d, title))
8787

8888
ref = unittest.AssertExistsAndLoadBean(t, &issues_model.Comment{IssueID: itarget.ID, RefIssueID: i.ID, RefCommentID: 0})
8989
assert.Equal(t, issues_model.CommentTypeIssueRef, ref.Type)

models/repo/topic.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -194,14 +194,16 @@ func (opts *FindTopicOptions) toConds() builder.Cond {
194194
// FindTopics retrieves the topics via FindTopicOptions
195195
func FindTopics(opts *FindTopicOptions) ([]*Topic, int64, error) {
196196
sess := db.GetEngine(db.DefaultContext).Select("topic.*").Where(opts.toConds())
197+
orderBy := "topic.repo_count DESC"
197198
if opts.RepoID > 0 {
198199
sess.Join("INNER", "repo_topic", "repo_topic.topic_id = topic.id")
200+
orderBy = "topic.name" // when render topics for a repo, it's better to sort them by name, to get consistent result
199201
}
200202
if opts.PageSize != 0 && opts.Page != 0 {
201203
sess = db.SetSessionPagination(sess, opts)
202204
}
203205
topics := make([]*Topic, 0, 10)
204-
total, err := sess.Desc("topic.repo_count").FindAndCount(&topics)
206+
total, err := sess.OrderBy(orderBy).FindAndCount(&topics)
205207
return topics, total, err
206208
}
207209

modules/indexer/issues/meilisearch.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package issues
66
import (
77
"context"
88
"strconv"
9+
"strings"
910
"sync"
1011
"time"
1112

@@ -120,10 +121,11 @@ func (b *MeilisearchIndexer) Delete(ids ...int64) error {
120121
// Search searches for issues by given conditions.
121122
// Returns the matching issue IDs
122123
func (b *MeilisearchIndexer) Search(ctx context.Context, keyword string, repoIDs []int64, limit, start int) (*SearchResult, error) {
123-
filter := make([][]string, 0, len(repoIDs))
124+
repoFilters := make([]string, 0, len(repoIDs))
124125
for _, repoID := range repoIDs {
125-
filter = append(filter, []string{"repo_id = " + strconv.FormatInt(repoID, 10)})
126+
repoFilters = append(repoFilters, "repo_id = "+strconv.FormatInt(repoID, 10))
126127
}
128+
filter := strings.Join(repoFilters, " OR ")
127129
searchRes, err := b.client.Index(b.indexerName).Search(keyword, &meilisearch.SearchRequest{
128130
Filter: filter,
129131
Limit: int64(limit),

routers/api/v1/repo/issue.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ func CreateIssue(ctx *context.APIContext) {
651651
form.Labels = make([]int64, 0)
652652
}
653653

654-
if err := issue_service.NewIssue(ctx.Repo.Repository, issue, form.Labels, nil, assigneeIDs); err != nil {
654+
if err := issue_service.NewIssue(ctx, ctx.Repo.Repository, issue, form.Labels, nil, assigneeIDs); err != nil {
655655
if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) {
656656
ctx.Error(http.StatusBadRequest, "UserDoesNotHaveAccessToRepo", err)
657657
return
@@ -752,7 +752,7 @@ func EditIssue(ctx *context.APIContext) {
752752
issue.Content = *form.Body
753753
}
754754
if form.Ref != nil {
755-
err = issue_service.ChangeIssueRef(issue, ctx.Doer, *form.Ref)
755+
err = issue_service.ChangeIssueRef(ctx, issue, ctx.Doer, *form.Ref)
756756
if err != nil {
757757
ctx.Error(http.StatusInternalServerError, "UpdateRef", err)
758758
return
@@ -790,7 +790,7 @@ func EditIssue(ctx *context.APIContext) {
790790
oneAssignee = *form.Assignee
791791
}
792792

793-
err = issue_service.UpdateAssignees(issue, oneAssignee, form.Assignees, ctx.Doer)
793+
err = issue_service.UpdateAssignees(ctx, issue, oneAssignee, form.Assignees, ctx.Doer)
794794
if err != nil {
795795
ctx.Error(http.StatusInternalServerError, "UpdateAssignees", err)
796796
return
@@ -887,7 +887,7 @@ func DeleteIssue(ctx *context.APIContext) {
887887
return
888888
}
889889

890-
if err = issue_service.DeleteIssue(ctx.Doer, ctx.Repo.GitRepo, issue); err != nil {
890+
if err = issue_service.DeleteIssue(ctx, ctx.Doer, ctx.Repo.GitRepo, issue); err != nil {
891891
ctx.Error(http.StatusInternalServerError, "DeleteIssueByID", err)
892892
return
893893
}

routers/api/v1/repo/pull.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ func EditPullRequest(ctx *context.APIContext) {
534534
// Send an empty array ([]) to clear all assignees from the Issue.
535535

536536
if ctx.Repo.CanWrite(unit.TypePullRequests) && (form.Assignees != nil || len(form.Assignee) > 0) {
537-
err = issue_service.UpdateAssignees(issue, form.Assignee, form.Assignees, ctx.Doer)
537+
err = issue_service.UpdateAssignees(ctx, issue, form.Assignee, form.Assignees, ctx.Doer)
538538
if err != nil {
539539
if user_model.IsErrUserNotExist(err) {
540540
ctx.Error(http.StatusUnprocessableEntity, "", fmt.Sprintf("Assignee does not exist: [name: %s]", err))

routers/api/v1/repo/pull_review.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ func apiReviewRequest(ctx *context.APIContext, opts api.PullReviewRequestOptions
706706
}
707707

708708
for _, reviewer := range reviewers {
709-
comment, err := issue_service.ReviewRequest(pr.Issue, ctx.Doer, reviewer, isAdd)
709+
comment, err := issue_service.ReviewRequest(ctx, pr.Issue, ctx.Doer, reviewer, isAdd)
710710
if err != nil {
711711
ctx.Error(http.StatusInternalServerError, "ReviewRequest", err)
712712
return
@@ -750,7 +750,7 @@ func apiReviewRequest(ctx *context.APIContext, opts api.PullReviewRequestOptions
750750
}
751751

752752
for _, teamReviewer := range teamReviewers {
753-
comment, err := issue_service.TeamReviewRequest(pr.Issue, ctx.Doer, teamReviewer, isAdd)
753+
comment, err := issue_service.TeamReviewRequest(ctx, pr.Issue, ctx.Doer, teamReviewer, isAdd)
754754
if err != nil {
755755
ctx.ServerError("TeamReviewRequest", err)
756756
return

routers/web/repo/blame.go

+1-6
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212

1313
repo_model "code.gitea.io/gitea/models/repo"
1414
user_model "code.gitea.io/gitea/models/user"
15-
"code.gitea.io/gitea/modules/base"
1615
"code.gitea.io/gitea/modules/charset"
1716
"code.gitea.io/gitea/modules/context"
1817
"code.gitea.io/gitea/modules/git"
@@ -23,10 +22,6 @@ import (
2322
"code.gitea.io/gitea/modules/util"
2423
)
2524

26-
const (
27-
tplBlame base.TplName = "repo/home"
28-
)
29-
3025
type blameRow struct {
3126
RowNumber int
3227
Avatar gotemplate.HTML
@@ -140,7 +135,7 @@ func RefBlame(ctx *context.Context) {
140135

141136
renderBlame(ctx, blameParts, commitNames, previousCommits)
142137

143-
ctx.HTML(http.StatusOK, tplBlame)
138+
ctx.HTML(http.StatusOK, tplRepoHome)
144139
}
145140

146141
func processBlameParts(ctx *context.Context, blameParts []git.BlamePart) (map[string]*user_model.UserCommit, map[string]string) {

routers/web/repo/issue.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -964,7 +964,7 @@ func DeleteIssue(ctx *context.Context) {
964964
return
965965
}
966966

967-
if err := issue_service.DeleteIssue(ctx.Doer, ctx.Repo.GitRepo, issue); err != nil {
967+
if err := issue_service.DeleteIssue(ctx, ctx.Doer, ctx.Repo.GitRepo, issue); err != nil {
968968
ctx.ServerError("DeleteIssueByID", err)
969969
return
970970
}
@@ -1132,7 +1132,7 @@ func NewIssuePost(ctx *context.Context) {
11321132
Ref: form.Ref,
11331133
}
11341134

1135-
if err := issue_service.NewIssue(repo, issue, labelIDs, attachments, assigneeIDs); err != nil {
1135+
if err := issue_service.NewIssue(ctx, repo, issue, labelIDs, attachments, assigneeIDs); err != nil {
11361136
if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) {
11371137
ctx.Error(http.StatusBadRequest, "UserDoesNotHaveAccessToRepo", err.Error())
11381138
return
@@ -2013,7 +2013,7 @@ func UpdateIssueTitle(ctx *context.Context) {
20132013
return
20142014
}
20152015

2016-
if err := issue_service.ChangeTitle(issue, ctx.Doer, title); err != nil {
2016+
if err := issue_service.ChangeTitle(ctx, issue, ctx.Doer, title); err != nil {
20172017
ctx.ServerError("ChangeTitle", err)
20182018
return
20192019
}
@@ -2037,7 +2037,7 @@ func UpdateIssueRef(ctx *context.Context) {
20372037

20382038
ref := ctx.FormTrim("ref")
20392039

2040-
if err := issue_service.ChangeIssueRef(issue, ctx.Doer, ref); err != nil {
2040+
if err := issue_service.ChangeIssueRef(ctx, issue, ctx.Doer, ref); err != nil {
20412041
ctx.ServerError("ChangeRef", err)
20422042
return
20432043
}
@@ -2161,7 +2161,7 @@ func UpdateIssueAssignee(ctx *context.Context) {
21612161
for _, issue := range issues {
21622162
switch action {
21632163
case "clear":
2164-
if err := issue_service.DeleteNotPassedAssignee(issue, ctx.Doer, []*user_model.User{}); err != nil {
2164+
if err := issue_service.DeleteNotPassedAssignee(ctx, issue, ctx.Doer, []*user_model.User{}); err != nil {
21652165
ctx.ServerError("ClearAssignees", err)
21662166
return
21672167
}
@@ -2182,7 +2182,7 @@ func UpdateIssueAssignee(ctx *context.Context) {
21822182
return
21832183
}
21842184

2185-
_, _, err = issue_service.ToggleAssignee(issue, ctx.Doer, assigneeID)
2185+
_, _, err = issue_service.ToggleAssignee(ctx, issue, ctx.Doer, assigneeID)
21862186
if err != nil {
21872187
ctx.ServerError("ToggleAssignee", err)
21882188
return
@@ -2269,7 +2269,7 @@ func UpdatePullReviewRequest(ctx *context.Context) {
22692269
return
22702270
}
22712271

2272-
_, err = issue_service.TeamReviewRequest(issue, ctx.Doer, team, action == "attach")
2272+
_, err = issue_service.TeamReviewRequest(ctx, issue, ctx.Doer, team, action == "attach")
22732273
if err != nil {
22742274
ctx.ServerError("TeamReviewRequest", err)
22752275
return
@@ -2307,7 +2307,7 @@ func UpdatePullReviewRequest(ctx *context.Context) {
23072307
return
23082308
}
23092309

2310-
_, err = issue_service.ReviewRequest(issue, ctx.Doer, reviewer, action == "attach")
2310+
_, err = issue_service.ReviewRequest(ctx, issue, ctx.Doer, reviewer, action == "attach")
23112311
if err != nil {
23122312
ctx.ServerError("ReviewRequest", err)
23132313
return

routers/web/user/search.go

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ func Search(ctx *context.Context) {
2424
Keyword: ctx.FormTrim("q"),
2525
UID: ctx.FormInt64("uid"),
2626
Type: user_model.UserTypeIndividual,
27+
IsActive: ctx.FormOptionalBool("active"),
2728
ListOptions: listOptions,
2829
})
2930
if err != nil {

services/issue/assignee.go

+12-13
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package issue
66
import (
77
"context"
88

9-
"code.gitea.io/gitea/models/db"
109
issues_model "code.gitea.io/gitea/models/issues"
1110
"code.gitea.io/gitea/models/organization"
1211
"code.gitea.io/gitea/models/perm"
@@ -18,7 +17,7 @@ import (
1817
)
1918

2019
// DeleteNotPassedAssignee deletes all assignees who aren't passed via the "assignees" array
21-
func DeleteNotPassedAssignee(issue *issues_model.Issue, doer *user_model.User, assignees []*user_model.User) (err error) {
20+
func DeleteNotPassedAssignee(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, assignees []*user_model.User) (err error) {
2221
var found bool
2322
oriAssignes := make([]*user_model.User, len(issue.Assignees))
2423
_ = copy(oriAssignes, issue.Assignees)
@@ -34,7 +33,7 @@ func DeleteNotPassedAssignee(issue *issues_model.Issue, doer *user_model.User, a
3433

3534
if !found {
3635
// This function also does comments and hooks, which is why we call it separately instead of directly removing the assignees here
37-
if _, _, err := ToggleAssignee(issue, doer, assignee.ID); err != nil {
36+
if _, _, err := ToggleAssignee(ctx, issue, doer, assignee.ID); err != nil {
3837
return err
3938
}
4039
}
@@ -44,25 +43,25 @@ func DeleteNotPassedAssignee(issue *issues_model.Issue, doer *user_model.User, a
4443
}
4544

4645
// ToggleAssignee changes a user between assigned and not assigned for this issue, and make issue comment for it.
47-
func ToggleAssignee(issue *issues_model.Issue, doer *user_model.User, assigneeID int64) (removed bool, comment *issues_model.Comment, err error) {
48-
removed, comment, err = issues_model.ToggleIssueAssignee(issue, doer, assigneeID)
46+
func ToggleAssignee(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, assigneeID int64) (removed bool, comment *issues_model.Comment, err error) {
47+
removed, comment, err = issues_model.ToggleIssueAssignee(ctx, issue, doer, assigneeID)
4948
if err != nil {
5049
return
5150
}
5251

53-
assignee, err1 := user_model.GetUserByID(db.DefaultContext, assigneeID)
52+
assignee, err1 := user_model.GetUserByID(ctx, assigneeID)
5453
if err1 != nil {
5554
err = err1
5655
return
5756
}
5857

59-
notification.NotifyIssueChangeAssignee(db.DefaultContext, doer, issue, assignee, removed, comment)
58+
notification.NotifyIssueChangeAssignee(ctx, doer, issue, assignee, removed, comment)
6059

6160
return removed, comment, err
6261
}
6362

6463
// ReviewRequest add or remove a review request from a user for this PR, and make comment for it.
65-
func ReviewRequest(issue *issues_model.Issue, doer, reviewer *user_model.User, isAdd bool) (comment *issues_model.Comment, err error) {
64+
func ReviewRequest(ctx context.Context, issue *issues_model.Issue, doer, reviewer *user_model.User, isAdd bool) (comment *issues_model.Comment, err error) {
6665
if isAdd {
6766
comment, err = issues_model.AddReviewRequest(issue, reviewer, doer)
6867
} else {
@@ -74,7 +73,7 @@ func ReviewRequest(issue *issues_model.Issue, doer, reviewer *user_model.User, i
7473
}
7574

7675
if comment != nil {
77-
notification.NotifyPullReviewRequest(db.DefaultContext, doer, issue, reviewer, isAdd, comment)
76+
notification.NotifyPullReviewRequest(ctx, doer, issue, reviewer, isAdd, comment)
7877
}
7978

8079
return comment, err
@@ -229,7 +228,7 @@ func IsValidTeamReviewRequest(ctx context.Context, reviewer *organization.Team,
229228
}
230229

231230
// TeamReviewRequest add or remove a review request from a team for this PR, and make comment for it.
232-
func TeamReviewRequest(issue *issues_model.Issue, doer *user_model.User, reviewer *organization.Team, isAdd bool) (comment *issues_model.Comment, err error) {
231+
func TeamReviewRequest(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, reviewer *organization.Team, isAdd bool) (comment *issues_model.Comment, err error) {
233232
if isAdd {
234233
comment, err = issues_model.AddTeamReviewRequest(issue, reviewer, doer)
235234
} else {
@@ -245,11 +244,11 @@ func TeamReviewRequest(issue *issues_model.Issue, doer *user_model.User, reviewe
245244
}
246245

247246
// notify all user in this team
248-
if err = comment.LoadIssue(db.DefaultContext); err != nil {
247+
if err = comment.LoadIssue(ctx); err != nil {
249248
return
250249
}
251250

252-
members, err := organization.GetTeamMembers(db.DefaultContext, &organization.SearchMembersOptions{
251+
members, err := organization.GetTeamMembers(ctx, &organization.SearchMembersOptions{
253252
TeamID: reviewer.ID,
254253
})
255254
if err != nil {
@@ -261,7 +260,7 @@ func TeamReviewRequest(issue *issues_model.Issue, doer *user_model.User, reviewe
261260
continue
262261
}
263262
comment.AssigneeID = member.ID
264-
notification.NotifyPullReviewRequest(db.DefaultContext, doer, issue, member, isAdd, comment)
263+
notification.NotifyPullReviewRequest(ctx, doer, issue, member, isAdd, comment)
265264
}
266265

267266
return comment, err

services/issue/assignee_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func TestDeleteNotPassedAssignee(t *testing.T) {
3131
assert.True(t, isAssigned)
3232

3333
// Clean everyone
34-
err = DeleteNotPassedAssignee(issue, user1, []*user_model.User{})
34+
err = DeleteNotPassedAssignee(db.DefaultContext, issue, user1, []*user_model.User{})
3535
assert.NoError(t, err)
3636
assert.EqualValues(t, 0, len(issue.Assignees))
3737

services/issue/comments.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import (
1616
)
1717

1818
// CreateComment creates comment of issue or commit.
19-
func CreateComment(opts *issues_model.CreateCommentOptions) (comment *issues_model.Comment, err error) {
20-
ctx, committer, err := db.TxContext(db.DefaultContext)
19+
func CreateComment(ctx context.Context, opts *issues_model.CreateCommentOptions) (comment *issues_model.Comment, err error) {
20+
ctx, committer, err := db.TxContext(ctx)
2121
if err != nil {
2222
return nil, err
2323
}
@@ -53,7 +53,7 @@ func CreateRefComment(doer *user_model.User, repo *repo_model.Repository, issue
5353
return nil
5454
}
5555

56-
_, err = CreateComment(&issues_model.CreateCommentOptions{
56+
_, err = CreateComment(db.DefaultContext, &issues_model.CreateCommentOptions{
5757
Type: issues_model.CommentTypeCommitRef,
5858
Doer: doer,
5959
Repo: repo,
@@ -66,7 +66,7 @@ func CreateRefComment(doer *user_model.User, repo *repo_model.Repository, issue
6666

6767
// CreateIssueComment creates a plain issue comment.
6868
func CreateIssueComment(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, issue *issues_model.Issue, content string, attachments []string) (*issues_model.Comment, error) {
69-
comment, err := CreateComment(&issues_model.CreateCommentOptions{
69+
comment, err := CreateComment(ctx, &issues_model.CreateCommentOptions{
7070
Type: issues_model.CommentTypeComment,
7171
Doer: doer,
7272
Repo: repo,

0 commit comments

Comments
 (0)