finish view issue without comments and ops
This commit is contained in:
parent
b410207dc1
commit
b4c0b7b98b
13 changed files with 662 additions and 425 deletions
|
@ -239,6 +239,28 @@ func (err ErrRepoAlreadyExist) Error() string {
|
|||
return fmt.Sprintf("repository already exists [uname: %d, name: %s]", err.Uname, err.Name)
|
||||
}
|
||||
|
||||
// .___
|
||||
// | | ______ ________ __ ____
|
||||
// | |/ ___// ___/ | \_/ __ \
|
||||
// | |\___ \ \___ \| | /\ ___/
|
||||
// |___/____ >____ >____/ \___ >
|
||||
// \/ \/ \/
|
||||
|
||||
type ErrIssueNotExist struct {
|
||||
ID int64
|
||||
RepoID int64
|
||||
Index int64
|
||||
}
|
||||
|
||||
func IsErrIssueNotExist(err error) bool {
|
||||
_, ok := err.(ErrIssueNotExist)
|
||||
return ok
|
||||
}
|
||||
|
||||
func (err ErrIssueNotExist) Error() string {
|
||||
return fmt.Sprintf("issue does not exist [id: %d, repo_id: %d, index: %4]", err.ID, err.RepoID, err.Index)
|
||||
}
|
||||
|
||||
// .____ ___. .__
|
||||
// | | _____ \_ |__ ____ | |
|
||||
// | | \__ \ | __ \_/ __ \| |
|
||||
|
|
|
@ -27,7 +27,6 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
ErrIssueNotExist = errors.New("Issue does not exist")
|
||||
ErrWrongIssueCounter = errors.New("Invalid number of issues for this milestone")
|
||||
ErrAttachmentNotLinked = errors.New("Attachment does not belong to this issue")
|
||||
ErrMissingIssueNumber = errors.New("No issue number specified")
|
||||
|
@ -57,11 +56,24 @@ type Issue struct {
|
|||
Deadline time.Time
|
||||
Created time.Time `xorm:"CREATED"`
|
||||
Updated time.Time `xorm:"UPDATED"`
|
||||
|
||||
Attachments []*Attachment `xorm:"-"`
|
||||
}
|
||||
|
||||
// HashTag returns unique hash tag for issue.
|
||||
func (i *Issue) HashTag() string {
|
||||
return "#issue-" + com.ToStr(i.Index)
|
||||
}
|
||||
|
||||
func (i *Issue) AfterSet(colName string, _ xorm.Cell) {
|
||||
var err error
|
||||
switch colName {
|
||||
case "id":
|
||||
i.Attachments, err = GetAttachmentsByIssueID(i.ID)
|
||||
if err != nil {
|
||||
log.Error(3, "GetAttachmentsByIssueID[%d]: %v", i.ID, err)
|
||||
}
|
||||
|
||||
case "milestone_id":
|
||||
if i.MilestoneID == 0 {
|
||||
return
|
||||
|
@ -69,7 +81,7 @@ func (i *Issue) AfterSet(colName string, _ xorm.Cell) {
|
|||
|
||||
i.Milestone, err = GetMilestoneByID(i.MilestoneID)
|
||||
if err != nil {
|
||||
log.Error(3, "GetMilestoneById: %v", err)
|
||||
log.Error(3, "GetMilestoneById[%d]: %v", i.ID, err)
|
||||
}
|
||||
case "assignee_id":
|
||||
if i.AssigneeID == 0 {
|
||||
|
@ -78,7 +90,7 @@ func (i *Issue) AfterSet(colName string, _ xorm.Cell) {
|
|||
|
||||
i.Assignee, err = GetUserByID(i.AssigneeID)
|
||||
if err != nil {
|
||||
log.Error(3, "GetUserByID: %v", err)
|
||||
log.Error(3, "GetUserByID[%d]: %v", i.ID, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +98,7 @@ func (i *Issue) AfterSet(colName string, _ xorm.Cell) {
|
|||
func (i *Issue) GetPoster() (err error) {
|
||||
i.Poster, err = GetUserByID(i.PosterID)
|
||||
if IsErrUserNotExist(err) {
|
||||
i.Poster = &User{Name: "FakeUser"}
|
||||
i.Poster = &User{Name: "Someone"}
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
|
@ -148,11 +160,6 @@ func (i *Issue) GetAssignee() (err error) {
|
|||
return err
|
||||
}
|
||||
|
||||
func (i *Issue) Attachments() []*Attachment {
|
||||
a, _ := GetAttachmentsForIssue(i.ID)
|
||||
return a
|
||||
}
|
||||
|
||||
func (i *Issue) AfterDelete() {
|
||||
_, err := DeleteAttachmentsByIssue(i.ID, true)
|
||||
|
||||
|
@ -255,25 +262,28 @@ func GetIssueByRef(ref string) (issue *Issue, err error) {
|
|||
}
|
||||
|
||||
// GetIssueByIndex returns issue by given index in repository.
|
||||
func GetIssueByIndex(rid, index int64) (*Issue, error) {
|
||||
issue := &Issue{RepoID: rid, Index: index}
|
||||
func GetIssueByIndex(repoID, index int64) (*Issue, error) {
|
||||
issue := &Issue{
|
||||
RepoID: repoID,
|
||||
Index: index,
|
||||
}
|
||||
has, err := x.Get(issue)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, ErrIssueNotExist
|
||||
return nil, ErrIssueNotExist{0, repoID, index}
|
||||
}
|
||||
return issue, nil
|
||||
}
|
||||
|
||||
// GetIssueById returns an issue by ID.
|
||||
func GetIssueById(id int64) (*Issue, error) {
|
||||
issue := &Issue{ID: id}
|
||||
has, err := x.Get(issue)
|
||||
// GetIssueByID returns an issue by given ID.
|
||||
func GetIssueByID(id int64) (*Issue, error) {
|
||||
issue := new(Issue)
|
||||
has, err := x.Id(id).Get(issue)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, ErrIssueNotExist
|
||||
return nil, ErrIssueNotExist{id, 0, 0}
|
||||
}
|
||||
return issue, nil
|
||||
}
|
||||
|
@ -1303,17 +1313,10 @@ func GetAttachmentByUUID(uuid string) (*Attachment, error) {
|
|||
return attach, nil
|
||||
}
|
||||
|
||||
func GetAttachmentsForIssue(issueId int64) ([]*Attachment, error) {
|
||||
// GetAttachmentsByIssueID returns all attachments for given issue by ID.
|
||||
func GetAttachmentsByIssueID(issueID int64) ([]*Attachment, error) {
|
||||
attachments := make([]*Attachment, 0, 10)
|
||||
err := x.Where("issue_id = ?", issueId).And("comment_id = 0").Find(&attachments)
|
||||
return attachments, err
|
||||
}
|
||||
|
||||
// GetAttachmentsByIssue returns a list of attachments for the given issue
|
||||
func GetAttachmentsByIssue(issueId int64) ([]*Attachment, error) {
|
||||
attachments := make([]*Attachment, 0, 10)
|
||||
err := x.Where("issue_id = ?", issueId).And("comment_id > 0").Find(&attachments)
|
||||
return attachments, err
|
||||
return attachments, x.Where("issue_id=? AND comment_id=0", issueID).Find(&attachments)
|
||||
}
|
||||
|
||||
// GetAttachmentsByComment returns a list of attachments for the given comment
|
||||
|
@ -1348,7 +1351,7 @@ func DeleteAttachments(attachments []*Attachment, remove bool) (int, error) {
|
|||
|
||||
// DeleteAttachmentsByIssue deletes all attachments associated with the given issue.
|
||||
func DeleteAttachmentsByIssue(issueId int64, remove bool) (int, error) {
|
||||
attachments, err := GetAttachmentsByIssue(issueId)
|
||||
attachments, err := GetAttachmentsByIssueID(issueId)
|
||||
|
||||
if err != nil {
|
||||
return 0, err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue