Browse Source

#1117

fix bug
tags/v1.21.12.1^2
chenyifan01 3 years ago
parent
commit
da0fe6690b
1 changed files with 28 additions and 40 deletions
  1. +28
    -40
      models/repo.go

+ 28
- 40
models/repo.go View File

@@ -649,53 +649,41 @@ func (repo *Repository) GetAssignees() (_ []*User, err error) {
return repo.getAssignees(x)
}

func (repo *Repository) getReviewersPrivate(e Engine, doerID, posterID int64) (users []*User, err error) {
users = make([]*User, 0, 20)

if err = e.
SQL("SELECT * FROM `user` WHERE id in (SELECT user_id FROM `access` WHERE repo_id = ? AND mode >= ? "+
" UNION SELECT owner_id FROM `repository` WHERE id = ?) AND id NOT IN ( ?, ?) ORDER BY name",
repo.ID, AccessModeWrite, repo.ID,
doerID, posterID).
Find(&users); err != nil {
return nil, err
}

return users, nil
}

func (repo *Repository) getReviewersPublic(e Engine, doerID, posterID int64) (_ []*User, err error) {

users := make([]*User, 0)

const SQLCmd = "SELECT * FROM `user` WHERE id IN ( " +
"SELECT user_id FROM `access` WHERE repo_id = ? AND mode >= ? " +
" UNION" +
" SELECT owner_id FROM `repository` WHERE id = ?)" +
" AND id NOT IN ( ?, ?) ORDER BY name "

if err = e.
SQL(SQLCmd,
repo.ID, AccessModeWrite, repo.ID, doerID, posterID).
Find(&users); err != nil {
return nil, err
}

return users, nil
}

func (repo *Repository) getReviewers(e Engine, doerID, posterID int64) (users []*User, err error) {
if err = repo.getOwner(e); err != nil {
return nil, err
}

if repo.IsPrivate ||
(repo.Owner.IsOrganization() && repo.Owner.Visibility == api.VisibleTypePrivate) {
users, err = repo.getReviewersPrivate(x, doerID, posterID)
if repo.Owner.IsOrganization() {
const SQLCmd = "SELECT * FROM `user` WHERE id IN (" +
"SELECT DISTINCT(t3.user_id) FROM ( " +
"SELECT user_id FROM `access` WHERE repo_id = ? AND mode >= ?" +
"UNION select t2.uid as user_id from team t1 left join team_user t2 on t1.id = t2.team_id where t1.org_id = ? and t1.authorize = 4) t3)" +
" AND id NOT IN ( ?, ?) ORDER BY name "

if err = e.
SQL(SQLCmd,
repo.ID, AccessModeWrite, repo.ID, doerID, posterID).
Find(&users); err != nil {
return nil, err
}
} else {
users, err = repo.getReviewersPublic(x, doerID, posterID)
const SQLCmd = "SELECT * FROM `user` WHERE id IN ( " +
"SELECT DISTINCT(t3.user_id) FROM ( " +
"SELECT user_id FROM `access` WHERE repo_id = ? AND mode >= ? " +
" UNION" +
" SELECT owner_id as user_id FROM `repository` WHERE id = ?) t3)" +
" AND id NOT IN ( ?, ?) ORDER BY name "

if err = e.
SQL(SQLCmd,
repo.ID, AccessModeWrite, repo.ID, doerID, posterID).
Find(&users); err != nil {
return nil, err
}
}
return

return users, nil
}

// GetReviewers get all users can be requested to review


Loading…
Cancel
Save