Browse Source

Allow poster to choose reviewers (#21084)

Allow the poster of a PR to choose reviewers (add only). 

Solve #20746
tags/v1.18.0-rc0
Jason Song 1 year ago
parent
commit
831e981357
No account linked to committer's email address
2 changed files with 15 additions and 7 deletions
  1. 10
    5
      routers/web/repo/issue.go
  2. 5
    2
      services/issue/assignee.go

+ 10
- 5
routers/web/repo/issue.go View File

@@ -1336,11 +1336,16 @@ func ViewIssue(ctx *context.Context) {

if issue.IsPull {
canChooseReviewer := ctx.Repo.CanWrite(unit.TypePullRequests)
if !canChooseReviewer && ctx.Doer != nil && ctx.IsSigned {
canChooseReviewer, err = issues_model.IsOfficialReviewer(ctx, issue, ctx.Doer)
if err != nil {
ctx.ServerError("IsOfficialReviewer", err)
return
if ctx.Doer != nil && ctx.IsSigned {
if !canChooseReviewer {
canChooseReviewer = ctx.Doer.ID == issue.PosterID
}
if !canChooseReviewer {
canChooseReviewer, err = issues_model.IsOfficialReviewer(ctx, issue, ctx.Doer)
if err != nil {
ctx.ServerError("IsOfficialReviewer", err)
return
}
}
}


+ 5
- 2
services/issue/assignee.go View File

@@ -131,7 +131,10 @@ func IsValidReviewRequest(ctx context.Context, reviewer, doer *user_model.User,
return nil
}

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

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

Loading…
Cancel
Save