From 25ebf691a82ff673ab6d04c23cc1523b631ac117 Mon Sep 17 00:00:00 2001 From: bb-ben <70356237+bboerben@users.noreply.github.com> Date: Sun, 3 Nov 2024 16:46:12 +0800 Subject: [PATCH] fix an internal error Team has negative ID while Users has positive. We need to use TeamReviewRequest for teams and ReviewRequest for a individual user. Also, we have to validate the permissions before send out the notification --- services/pull/pull.go | 57 +++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/services/pull/pull.go b/services/pull/pull.go index 7e7006d305..3a970c24b5 100644 --- a/services/pull/pull.go +++ b/services/pull/pull.go @@ -117,38 +117,6 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *iss assigneeCommentMap[assigneeID] = comment } - for _, reviewerID := range reviewerIDs { - // negative reviewIDs represent team requests - if reviewerID < 0 { - team, err := organization.GetTeamByID(ctx, -reviewerID) - if err != nil { - return err - } - err = issue_service.IsValidTeamReviewRequest(ctx, team, issue.Poster, true, issue) - if err != nil { - return err - } - _, err = issue_service.TeamReviewRequest(ctx, issue, issue.Poster, team, true) - if err != nil { - return err - } - continue - } - - reviewer, err := user_model.GetUserByID(ctx, reviewerID) - if err != nil { - return err - } - permDoer, err := access_model.GetUserRepoPermission(ctx, issue.Repo, issue.Poster) - if err != nil { - return err - } - err = issue_service.IsValidReviewRequest(ctx, reviewer, issue.Poster, true, issue, &permDoer) - if err != nil { - return err - } - } - pr.Issue = issue issue.PullRequest = pr @@ -232,11 +200,32 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *iss } for _, reviewerID := range reviewerIDs { + // negative reviewIDs represent team requests + if reviewerID < 0 { + team, err := organization.GetTeamByID(ctx, -reviewerID) + if err != nil { + return err + } + err = issue_service.IsValidTeamReviewRequest(ctx, team, issue.Poster, true, issue) + if err != nil { + return err + } + _, err = issue_service.TeamReviewRequest(ctx, issue, issue.Poster, team, true) + if err != nil { + return err + } + continue + } + reviewer, err := user_model.GetUserByID(ctx, reviewerID) if err != nil { - return ErrDependenciesLeft + return err } - _, err = issue_service.ReviewRequest(ctx, issue, issue.Poster, reviewer, true) + permDoer, err := access_model.GetUserRepoPermission(ctx, issue.Repo, issue.Poster) + if err != nil { + return err + } + err = issue_service.IsValidReviewRequest(ctx, reviewer, issue.Poster, true, issue, &permDoer) if err != nil { return err }