diff options
author | Unknown <joe2010xtmf@163.com> | 2014-05-08 12:24:11 -0400 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-05-08 12:24:11 -0400 |
commit | e86728340654b18a657a65920c16e28a1b00cca7 (patch) | |
tree | 5ef13e753aef6fab75c78fac703945fe0938fd03 /models/issue.go | |
parent | a03f380fa86f83f35a5636535ec3002100b335bb (diff) | |
download | gitea-e86728340654b18a657a65920c16e28a1b00cca7.tar.gz gitea-e86728340654b18a657a65920c16e28a1b00cca7.zip |
Assignee back end
Diffstat (limited to 'models/issue.go')
-rw-r--r-- | models/issue.go | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/models/issue.go b/models/issue.go index 14faa5b31f..525e75f2c3 100644 --- a/models/issue.go +++ b/models/issue.go @@ -28,8 +28,9 @@ type Issue struct { Poster *User `xorm:"-"` MilestoneId int64 AssigneeId int64 - IsRead bool `xorm:"-"` - IsPull bool // Indicates whether is a pull request or not. + Assignee *User `xorm:"-"` + IsRead bool `xorm:"-"` + IsPull bool // Indicates whether is a pull request or not. IsClosed bool Labels string `xorm:"TEXT"` Content string `xorm:"TEXT"` @@ -46,6 +47,14 @@ func (i *Issue) GetPoster() (err error) { return err } +func (i *Issue) GetAssignee() (err error) { + if i.AssigneeId == 0 { + return nil + } + i.Assignee, err = GetUserById(i.AssigneeId) + return err +} + // CreateIssue creates new issue for repository. func NewIssue(issue *Issue) (err error) { sess := orm.NewSession() @@ -159,38 +168,35 @@ type IssueUser struct { } // NewIssueUserPairs adds new issue-user pairs for new issue of repository. -func NewIssueUserPairs(rid, iid, oid, uid, aid int64) (err error) { +func NewIssueUserPairs(rid, iid, oid, pid, aid int64, repoName string) (err error) { iu := &IssueUser{IssueId: iid, RepoId: rid} - ws, err := GetWatchers(rid) + us, err := GetCollaborators(repoName) if err != nil { return err } - // TODO: check collaborators. - // Add owner. - ids := []int64{oid} - for _, id := range ids { - if IsWatching(id, rid) { - continue + isNeedAddPoster := true + for _, u := range us { + iu.Uid = u.Id + iu.IsPoster = iu.Uid == pid + if isNeedAddPoster && iu.IsPoster { + isNeedAddPoster = false } - - // In case owner is not watching. - ws = append(ws, &Watch{UserId: id}) - } - - for _, w := range ws { - if w.UserId == 0 { - continue + iu.IsAssigned = iu.Uid == aid + if _, err = orm.Insert(iu); err != nil { + return err } - - iu.Uid = w.UserId - iu.IsPoster = iu.Uid == uid + } + if isNeedAddPoster { + iu.Uid = pid + iu.IsPoster = true iu.IsAssigned = iu.Uid == aid if _, err = orm.Insert(iu); err != nil { return err } } + return nil } |