@@ -557,8 +557,8 @@ func renderMilestones(ctx *context.Context) {
557557	ctx .Data ["ClosedMilestones" ] =  closedMilestones 
558558}
559559
560- // RetrieveRepoMilestonesAndAssignees find all the milestones  and assignees  of a repository 
561- func  RetrieveRepoMilestonesAndAssignees (ctx  * context.Context , repo  * repo_model.Repository ) {
560+ // RetrieveRepoMilestonesAndAssignees find all the milestones, assignees,  and reviewers  of a repository 
561+ func  RetrieveRepoMilestonesAssigneesAndReviewers (ctx  * context.Context , repo  * repo_model.Repository ) {
562562	var  err  error 
563563	ctx .Data ["OpenMilestones" ], err  =  db .Find [issues_model.Milestone ](ctx , issues_model.FindMilestoneOptions {
564564		RepoID :   repo .ID ,
@@ -585,6 +585,8 @@ func RetrieveRepoMilestonesAndAssignees(ctx *context.Context, repo *repo_model.R
585585	ctx .Data ["Assignees" ] =  shared_user .MakeSelfOnTop (ctx .Doer , assigneeUsers )
586586
587587	handleTeamMentions (ctx )
588+ 
589+ 	retrieveReviewers (ctx )
588590}
589591
590592func  retrieveProjects (ctx  * context.Context , repo  * repo_model.Repository ) {
@@ -862,7 +864,7 @@ func RetrieveRepoMetas(ctx *context.Context, repo *repo_model.Repository, isPull
862864		labels  =  append (labels , orgLabels ... )
863865	}
864866
865- 	RetrieveRepoMilestonesAndAssignees (ctx , repo )
867+ 	RetrieveRepoMilestonesAssigneesAndReviewers (ctx , repo )
866868	if  ctx .Written () {
867869		return  nil 
868870	}
@@ -883,6 +885,46 @@ func RetrieveRepoMetas(ctx *context.Context, repo *repo_model.Repository, isPull
883885	return  labels 
884886}
885887
888+ func  retrieveReviewers (ctx  * context.Context ) {
889+ 	// Get reviewer info for pr 
890+ 	var  (
891+ 		reviewers        []* user_model.User 
892+ 		teamReviewers    []* organization.Team 
893+ 		reviewersResult  []* repoReviewerSelection 
894+ 	)
895+ 	reviewers , err  :=  repo_model .GetReviewers (ctx , ctx .Repo .Repository , ctx .Doer .ID , ctx .Doer .ID )
896+ 	if  err  !=  nil  {
897+ 		ctx .ServerError ("GetReviewers" , err )
898+ 		return 
899+ 	}
900+ 
901+ 	teamReviewers , err  =  repo_service .GetReviewerTeams (ctx , ctx .Repo .Repository )
902+ 	if  err  !=  nil  {
903+ 		ctx .ServerError ("GetReviewerTeams" , err )
904+ 		return 
905+ 	}
906+ 
907+ 	for  _ , user  :=  range  reviewers  {
908+ 		reviewersResult  =  append (reviewersResult , & repoReviewerSelection {
909+ 			IsTeam :    false ,
910+ 			CanChange : true ,
911+ 			User :      user ,
912+ 			ItemID :    user .ID ,
913+ 		})
914+ 	}
915+ 
916+ 	// negative reviewIDs represent team requests 
917+ 	for  _ , team  :=  range  teamReviewers  {
918+ 		reviewersResult  =  append (reviewersResult , & repoReviewerSelection {
919+ 			IsTeam :    true ,
920+ 			CanChange : true ,
921+ 			Team :      team ,
922+ 			ItemID :    - team .ID ,
923+ 		})
924+ 	}
925+ 	ctx .Data ["Reviewers" ] =  reviewersResult 
926+ }
927+ 
886928// Tries to load and set an issue template. The first return value indicates if a template was loaded. 
887929func  setTemplateIfExists (ctx  * context.Context , ctxDataKey  string , possibleFiles  []string ) (bool , map [string ]error ) {
888930	commit , err  :=  ctx .Repo .GitRepo .GetBranchCommit (ctx .Repo .Repository .DefaultBranch )
@@ -1573,7 +1615,7 @@ func ViewIssue(ctx *context.Context) {
15731615
15741616	// Check milestone and assignee. 
15751617	if  ctx .Repo .CanWriteIssuesOrPulls (issue .IsPull ) {
1576- 		RetrieveRepoMilestonesAndAssignees (ctx , repo )
1618+ 		RetrieveRepoMilestonesAssigneesAndReviewers (ctx , repo )
15771619		retrieveProjects (ctx , repo )
15781620
15791621		if  ctx .Written () {
0 commit comments