Skip to content

Commit 831e981

Browse files
authored
Allow poster to choose reviewers (#21084)
Allow the poster of a PR to choose reviewers (add only). Solve #20746
1 parent b5d21c0 commit 831e981

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

routers/web/repo/issue.go

+10-5
Original file line numberDiff line numberDiff line change
@@ -1336,11 +1336,16 @@ func ViewIssue(ctx *context.Context) {
13361336

13371337
if issue.IsPull {
13381338
canChooseReviewer := ctx.Repo.CanWrite(unit.TypePullRequests)
1339-
if !canChooseReviewer && ctx.Doer != nil && ctx.IsSigned {
1340-
canChooseReviewer, err = issues_model.IsOfficialReviewer(ctx, issue, ctx.Doer)
1341-
if err != nil {
1342-
ctx.ServerError("IsOfficialReviewer", err)
1343-
return
1339+
if ctx.Doer != nil && ctx.IsSigned {
1340+
if !canChooseReviewer {
1341+
canChooseReviewer = ctx.Doer.ID == issue.PosterID
1342+
}
1343+
if !canChooseReviewer {
1344+
canChooseReviewer, err = issues_model.IsOfficialReviewer(ctx, issue, ctx.Doer)
1345+
if err != nil {
1346+
ctx.ServerError("IsOfficialReviewer", err)
1347+
return
1348+
}
13441349
}
13451350
}
13461351

services/issue/assignee.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,10 @@ func IsValidReviewRequest(ctx context.Context, reviewer, doer *user_model.User,
131131
return nil
132132
}
133133

134-
pemResult = permDoer.CanAccessAny(perm.AccessModeWrite, unit.TypePullRequests)
134+
pemResult = doer.ID == issue.PosterID
135+
if !pemResult {
136+
pemResult = permDoer.CanAccessAny(perm.AccessModeWrite, unit.TypePullRequests)
137+
}
135138
if !pemResult {
136139
pemResult, err = issues_model.IsOfficialReviewer(ctx, issue, doer)
137140
if err != nil {
@@ -201,7 +204,7 @@ func IsValidTeamReviewRequest(ctx context.Context, reviewer *organization.Team,
201204
}
202205

203206
doerCanWrite := permission.CanAccessAny(perm.AccessModeWrite, unit.TypePullRequests)
204-
if !doerCanWrite {
207+
if !doerCanWrite && doer.ID != issue.PosterID {
205208
official, err := issues_model.IsOfficialReviewer(ctx, issue, doer)
206209
if err != nil {
207210
log.Error("Unable to Check if IsOfficialReviewer for %-v in %-v#%d", doer, issue.Repo, issue.Index)

0 commit comments

Comments
 (0)