From 8c909820a9fd1697bb690ec0451c4ead97b51505 Mon Sep 17 00:00:00 2001 From: blueworrybear Date: Tue, 15 Oct 2019 20:19:32 +0800 Subject: Enable Uploading/Removing Attachments When Editing an Issue/Comment (#8426) --- models/issue.go | 20 ++++++++++++++++++++ models/issue_comment.go | 21 +++++++++++++++++++++ 2 files changed, 41 insertions(+) (limited to 'models') diff --git a/models/issue.go b/models/issue.go index 90925f92f5..6503a0618f 100644 --- a/models/issue.go +++ b/models/issue.go @@ -855,6 +855,26 @@ func AddDeletePRBranchComment(doer *User, repo *Repository, issueID int64, branc return sess.Commit() } +// UpdateAttachments update attachments by UUIDs for the issue +func (issue *Issue) UpdateAttachments(uuids []string) (err error) { + sess := x.NewSession() + defer sess.Close() + if err = sess.Begin(); err != nil { + return err + } + attachments, err := getAttachmentsByUUIDs(sess, uuids) + if err != nil { + return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %v", uuids, err) + } + for i := 0; i < len(attachments); i++ { + attachments[i].IssueID = issue.ID + if err := updateAttachment(sess, attachments[i]); err != nil { + return fmt.Errorf("update attachment [id: %d]: %v", attachments[i].ID, err) + } + } + return sess.Commit() +} + // ChangeContent changes issue content, as the given user. func (issue *Issue) ChangeContent(doer *User, content string) (err error) { oldContent := issue.Content diff --git a/models/issue_comment.go b/models/issue_comment.go index 3a090c3b19..ccf239d600 100644 --- a/models/issue_comment.go +++ b/models/issue_comment.go @@ -357,6 +357,27 @@ func (c *Comment) LoadAttachments() error { return nil } +// UpdateAttachments update attachments by UUIDs for the comment +func (c *Comment) UpdateAttachments(uuids []string) error { + sess := x.NewSession() + defer sess.Close() + if err := sess.Begin(); err != nil { + return err + } + attachments, err := getAttachmentsByUUIDs(sess, uuids) + if err != nil { + return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %v", uuids, err) + } + for i := 0; i < len(attachments); i++ { + attachments[i].IssueID = c.IssueID + attachments[i].CommentID = c.ID + if err := updateAttachment(sess, attachments[i]); err != nil { + return fmt.Errorf("update attachment [id: %d]: %v", attachments[i].ID, err) + } + } + return sess.Commit() +} + // LoadAssigneeUser if comment.Type is CommentTypeAssignees, then load assignees func (c *Comment) LoadAssigneeUser() error { var err error -- cgit v1.2.3