Skip to content

Commit 23bea17

Browse files
Add request review to API
1 parent fb674ba commit 23bea17

File tree

3 files changed

+57
-2
lines changed

3 files changed

+57
-2
lines changed

modules/structs/pull.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ type CreatePullRequestOption struct {
7979
Milestone int64 `json:"milestone"`
8080
Labels []int64 `json:"labels"`
8181
// swagger:strfmt date-time
82-
Deadline *time.Time `json:"due_date"`
82+
Deadline *time.Time `json:"due_date"`
83+
Reviewers []string `json:"reviewers"`
84+
TeamReviewers []string `json:"team_reviewers"`
8385
}
8486

8587
// EditPullRequestOption options when modify pull request

routers/api/v1/repo/pull.go

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
activities_model "code.gitea.io/gitea/models/activities"
1717
git_model "code.gitea.io/gitea/models/git"
1818
issues_model "code.gitea.io/gitea/models/issues"
19+
"code.gitea.io/gitea/models/organization"
1920
access_model "code.gitea.io/gitea/models/perm/access"
2021
pull_model "code.gitea.io/gitea/models/pull"
2122
repo_model "code.gitea.io/gitea/models/repo"
@@ -420,8 +421,46 @@ func CreatePullRequest(ctx *context.APIContext) {
420421
return
421422
}
422423
}
424+
// handle reviewers
425+
var reviewerIds []int64
423426

424-
if err := pull_service.NewPullRequest(ctx, repo, prIssue, labelIDs, []string{}, pr, assigneeIDs, []int64{}); err != nil {
427+
for _, r := range form.Reviewers {
428+
var reviewer *user_model.User
429+
if strings.Contains(r, "@") {
430+
reviewer, err = user_model.GetUserByEmail(ctx, r)
431+
} else {
432+
reviewer, err = user_model.GetUserByName(ctx, r)
433+
}
434+
435+
if err != nil {
436+
if user_model.IsErrUserNotExist(err) {
437+
ctx.NotFound("UserNotExist", fmt.Sprintf("User with id '%s' not exist", r))
438+
return
439+
}
440+
ctx.Error(http.StatusInternalServerError, "GetUser", err)
441+
return
442+
}
443+
reviewerIds = append(reviewerIds, reviewer.ID)
444+
}
445+
446+
// handle teams as reviewers
447+
if ctx.Repo.Repository.Owner.IsOrganization() && len(form.TeamReviewers) > 0 {
448+
for _, t := range form.TeamReviewers {
449+
var teamReviewer *organization.Team
450+
teamReviewer, err = organization.GetTeam(ctx, ctx.Repo.Owner.ID, t)
451+
if err != nil {
452+
if organization.IsErrTeamNotExist(err) {
453+
ctx.NotFound("TeamNotExist", fmt.Sprintf("Team '%s' not exist", t))
454+
return
455+
}
456+
ctx.Error(http.StatusInternalServerError, "ReviewRequest", err)
457+
return
458+
}
459+
reviewerIds = append(reviewerIds, teamReviewer.ID)
460+
}
461+
}
462+
463+
if err := pull_service.NewPullRequest(ctx, repo, prIssue, labelIDs, []string{}, pr, assigneeIDs, reviewerIds); err != nil {
425464
if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) {
426465
ctx.Error(http.StatusBadRequest, "UserDoesNotHaveAccessToRepo", err)
427466
return

templates/swagger/v1_json.tmpl

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)