Add an updated_at field to the API call for comment's attachment creation
The update date is applied to the comment, and is set as the asset creation date.
This commit is contained in:
parent
cf787ad7fd
commit
1e4ff424d3
3 changed files with 53 additions and 9 deletions
|
@ -1107,13 +1107,23 @@ func UpdateComment(c *Comment, doer *user_model.User) error {
|
||||||
}
|
}
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
sess := db.GetEngine(ctx).ID(c.ID).AllCols()
|
sess := db.GetEngine(ctx).ID(c.ID).AllCols()
|
||||||
if c.Issue.NoAutoTime {
|
|
||||||
c.UpdatedUnix = c.Issue.UpdatedUnix
|
|
||||||
sess = sess.NoAutoTime()
|
|
||||||
}
|
|
||||||
if _, err := sess.Update(c); err != nil {
|
if _, err := sess.Update(c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if c.Issue.NoAutoTime {
|
||||||
|
// AllCols().Update() does not change the "update_unix" field
|
||||||
|
// even if NoAutoTime is set.
|
||||||
|
// So, we need to commit the former pending Update() and
|
||||||
|
// then call an other Update() specifically to set "updated_unix".
|
||||||
|
if err := committer.Commit(); err != nil {
|
||||||
|
return fmt.Errorf("Commit: %w", err)
|
||||||
|
}
|
||||||
|
c.UpdatedUnix = c.Issue.UpdatedUnix
|
||||||
|
sess := db.GetEngine(ctx).ID(c.ID).Cols("updated_unix").NoAutoTime()
|
||||||
|
if _, err := sess.Update(c); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
if err := c.LoadIssue(ctx); err != nil {
|
if err := c.LoadIssue(ctx); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ package repo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
issues_model "code.gitea.io/gitea/models/issues"
|
issues_model "code.gitea.io/gitea/models/issues"
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
|
@ -144,6 +145,11 @@ func CreateIssueCommentAttachment(ctx *context.APIContext) {
|
||||||
// description: name of the attachment
|
// description: name of the attachment
|
||||||
// type: string
|
// type: string
|
||||||
// required: false
|
// required: false
|
||||||
|
// - name: updated_at
|
||||||
|
// in: query
|
||||||
|
// description: time of the attachment's creation. This is a timestamp in RFC 3339 format
|
||||||
|
// type: string
|
||||||
|
// format: date-time
|
||||||
// - name: attachment
|
// - name: attachment
|
||||||
// in: formData
|
// in: formData
|
||||||
// description: attachment to upload
|
// description: attachment to upload
|
||||||
|
@ -167,6 +173,25 @@ func CreateIssueCommentAttachment(ctx *context.APIContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updatedAt := ctx.Req.FormValue("updated_at")
|
||||||
|
if len(updatedAt) != 0 {
|
||||||
|
updated, err := time.Parse(time.RFC3339, updatedAt)
|
||||||
|
if err != nil {
|
||||||
|
ctx.Error(http.StatusInternalServerError, "time.Parse", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = comment.LoadIssue(ctx)
|
||||||
|
if err != nil {
|
||||||
|
ctx.Error(http.StatusInternalServerError, "LoadIssue", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = issue_service.SetIssueUpdateDate(ctx, comment.Issue, &updated, ctx.Doer)
|
||||||
|
if err != nil {
|
||||||
|
ctx.Error(http.StatusForbidden, "SetIssueUpdateDate", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Get uploaded file from request
|
// Get uploaded file from request
|
||||||
file, header, err := ctx.Req.FormFile("attachment")
|
file, header, err := ctx.Req.FormFile("attachment")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -181,11 +206,13 @@ func CreateIssueCommentAttachment(ctx *context.APIContext) {
|
||||||
}
|
}
|
||||||
|
|
||||||
attachment, err := attachment.UploadAttachment(file, setting.Attachment.AllowedTypes, header.Size, &repo_model.Attachment{
|
attachment, err := attachment.UploadAttachment(file, setting.Attachment.AllowedTypes, header.Size, &repo_model.Attachment{
|
||||||
Name: filename,
|
Name: filename,
|
||||||
UploaderID: ctx.Doer.ID,
|
UploaderID: ctx.Doer.ID,
|
||||||
RepoID: ctx.Repo.Repository.ID,
|
RepoID: ctx.Repo.Repository.ID,
|
||||||
IssueID: comment.IssueID,
|
IssueID: comment.IssueID,
|
||||||
CommentID: comment.ID,
|
CommentID: comment.ID,
|
||||||
|
NoAutoTime: comment.Issue.NoAutoTime,
|
||||||
|
CreatedUnix: comment.Issue.UpdatedUnix,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "UploadAttachment", err)
|
ctx.Error(http.StatusInternalServerError, "UploadAttachment", err)
|
||||||
|
|
7
templates/swagger/v1_json.tmpl
generated
7
templates/swagger/v1_json.tmpl
generated
|
@ -6120,6 +6120,13 @@
|
||||||
"name": "name",
|
"name": "name",
|
||||||
"in": "query"
|
"in": "query"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time",
|
||||||
|
"description": "time of the attachment's creation. This is a timestamp in RFC 3339 format",
|
||||||
|
"name": "updated_at",
|
||||||
|
"in": "query"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"description": "attachment to upload",
|
"description": "attachment to upload",
|
||||||
|
|
Loading…
Reference in a new issue