@@ -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
0 commit comments