mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Fix internal sever error when visiting a PR that bound to the deleted team (#24127)
Close: #23738
The actual cause of `500 Internal Server Error` in the issue is not what
is descirbed in the issue.
The actual cause is that after deleting team, if there is a PR which has
requested reivew from the deleted team, the comment could not match with
the deleted team by `assgin_team_id`. So the value of `.AssigneeTeam`
(see below code block) is `nil` which cause `500 error`.
1c8bc4081a/templates/repo/issue/view_content/comments.tmpl (L691-L695)
To fix this bug, there are the following problems to be resolved:
- [x] 1. ~~Stroe the name of the team in `content` column when inserting
`comment` into DB in case that we cannot get the name of team after it
is deleted. But for comments that already exist, just display "Unknown
Team"~~ Just display "Ghost Team" in the comment if the assgined team is
deleted.
- [x] 2. Delete the PR&team binding (the row of which `review_team_id =
${team_id} ` in table `review`) when deleting team.
- [x] 3.For already exist and undeleted binding rows in in table
`review`, ~~we can delete these rows when executing migrations.~~ they
do not affect the function, so won't delete them.
			
			
This commit is contained in:
		| @@ -414,6 +414,7 @@ func DeleteTeam(t *organization.Team) error { | |||||||
| 		&organization.TeamUser{OrgID: t.OrgID, TeamID: t.ID}, | 		&organization.TeamUser{OrgID: t.OrgID, TeamID: t.ID}, | ||||||
| 		&organization.TeamUnit{TeamID: t.ID}, | 		&organization.TeamUnit{TeamID: t.ID}, | ||||||
| 		&organization.TeamInvite{TeamID: t.ID}, | 		&organization.TeamInvite{TeamID: t.ID}, | ||||||
|  | 		&issues_model.Review{Type: issues_model.ReviewTypeRequest, ReviewerTeamID: t.ID}, // batch delete the binding relationship between team and PR (request review from team) | ||||||
| 	); err != nil { | 	); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -688,10 +688,15 @@ | |||||||
| 							{{$.locale.Tr "repo.issues.review.add_review_request" (.Assignee.GetDisplayName|Escape) $createdStr | Safe}} | 							{{$.locale.Tr "repo.issues.review.add_review_request" (.Assignee.GetDisplayName|Escape) $createdStr | Safe}} | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 					{{else}} | 					{{else}} | ||||||
|  | 						<!-- If the assigned team is deleted, just displaying "Ghost Team" in the comment --> | ||||||
|  | 						{{$teamName := "Ghost Team"}} | ||||||
|  | 						{{if .AssigneeTeam}} | ||||||
|  | 							{{$teamName = .AssigneeTeam.Name}} | ||||||
|  | 						{{end}} | ||||||
| 						{{if .RemovedAssignee}} | 						{{if .RemovedAssignee}} | ||||||
| 							{{$.locale.Tr "repo.issues.review.remove_review_request" (.AssigneeTeam.Name|Escape) $createdStr | Safe}} | 							{{$.locale.Tr "repo.issues.review.remove_review_request" ($teamName|Escape) $createdStr | Safe}} | ||||||
| 						{{else}} | 						{{else}} | ||||||
| 							{{$.locale.Tr "repo.issues.review.add_review_request" (.AssigneeTeam.Name|Escape) $createdStr | Safe}} | 							{{$.locale.Tr "repo.issues.review.add_review_request" ($teamName|Escape) $createdStr | Safe}} | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 					{{end}} | 					{{end}} | ||||||
| 				</span> | 				</span> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user