@@ -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"
@@ -553,8 +554,46 @@ func CreatePullRequest(ctx *context.APIContext) {
553554 return
554555 }
555556 }
557+ // handle reviewers
558+ var reviewerIds []int64
556559
557- if err := pull_service .NewPullRequest (ctx , repo , prIssue , labelIDs , []string {}, pr , assigneeIDs , []int64 {}); err != nil {
560+ for _ , r := range form .Reviewers {
561+ var reviewer * user_model.User
562+ if strings .Contains (r , "@" ) {
563+ reviewer , err = user_model .GetUserByEmail (ctx , r )
564+ } else {
565+ reviewer , err = user_model .GetUserByName (ctx , r )
566+ }
567+
568+ if err != nil {
569+ if user_model .IsErrUserNotExist (err ) {
570+ ctx .NotFound ("UserNotExist" , fmt .Sprintf ("User with id '%s' not exist" , r ))
571+ return
572+ }
573+ ctx .Error (http .StatusInternalServerError , "GetUser" , err )
574+ return
575+ }
576+ reviewerIds = append (reviewerIds , reviewer .ID )
577+ }
578+
579+ // handle teams as reviewers
580+ if ctx .Repo .Repository .Owner .IsOrganization () && len (form .TeamReviewers ) > 0 {
581+ for _ , t := range form .TeamReviewers {
582+ var teamReviewer * organization.Team
583+ teamReviewer , err = organization .GetTeam (ctx , ctx .Repo .Owner .ID , t )
584+ if err != nil {
585+ if organization .IsErrTeamNotExist (err ) {
586+ ctx .NotFound ("TeamNotExist" , fmt .Sprintf ("Team '%s' not exist" , t ))
587+ return
588+ }
589+ ctx .Error (http .StatusInternalServerError , "ReviewRequest" , err )
590+ return
591+ }
592+ reviewerIds = append (reviewerIds , teamReviewer .ID )
593+ }
594+ }
595+
596+ if err := pull_service .NewPullRequest (ctx , repo , prIssue , labelIDs , []string {}, pr , assigneeIDs , reviewerIds ); err != nil {
558597 if repo_model .IsErrUserDoesNotHaveAccessToRepo (err ) {
559598 ctx .Error (http .StatusBadRequest , "UserDoesNotHaveAccessToRepo" , err )
560599 } else if errors .Is (err , user_model .ErrBlockedUser ) {
0 commit comments