Add UI to delete tracked times (#14100)

Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
Norwin 2021-02-19 10:52:11 +00:00 committed by GitHub
parent 6a696b93b1
commit d38ae597e1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 123 additions and 4 deletions

View file

@ -1416,6 +1416,10 @@ func ViewIssue(ctx *context.Context) {
ctx.ServerError("LoadPushCommits", err)
return
}
} else if comment.Type == models.CommentTypeAddTimeManual ||
comment.Type == models.CommentTypeStopTracking {
// drop error since times could be pruned from DB..
_ = comment.LoadTime()
}
}

View file

@ -10,13 +10,13 @@ import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
auth "code.gitea.io/gitea/modules/forms"
"code.gitea.io/gitea/modules/forms"
"code.gitea.io/gitea/modules/web"
)
// AddTimeManually tracks time manually
func AddTimeManually(c *context.Context) {
form := web.GetForm(c).(*auth.AddTimeManuallyForm)
form := web.GetForm(c).(*forms.AddTimeManuallyForm)
issue := GetActionIssue(c)
if c.Written() {
return
@ -48,3 +48,39 @@ func AddTimeManually(c *context.Context) {
c.Redirect(url, http.StatusSeeOther)
}
// DeleteTime deletes tracked time
func DeleteTime(c *context.Context) {
issue := GetActionIssue(c)
if c.Written() {
return
}
if !c.Repo.CanUseTimetracker(issue, c.User) {
c.NotFound("CanUseTimetracker", nil)
return
}
t, err := models.GetTrackedTimeByID(c.ParamsInt64(":timeid"))
if err != nil {
if models.IsErrNotExist(err) {
c.NotFound("time not found", err)
return
}
c.Error(http.StatusInternalServerError, "GetTrackedTimeByID", err.Error())
return
}
// only OP or admin may delete
if !c.IsSigned || (!c.IsUserSiteAdmin() && c.User.ID != t.UserID) {
c.Error(http.StatusForbidden, "not allowed")
return
}
if err = models.DeleteTime(t); err != nil {
c.ServerError("DeleteTime", err)
return
}
c.Flash.Success(c.Tr("repo.issues.del_time_history", models.SecToTime(t.Time)))
c.Redirect(issue.HTMLURL())
}

View file

@ -723,6 +723,7 @@ func RegisterRoutes(m *web.Route) {
m.Combo("/comments").Post(repo.MustAllowUserComment, bindIgnErr(auth.CreateCommentForm{}), repo.NewComment)
m.Group("/times", func() {
m.Post("/add", bindIgnErr(auth.AddTimeManuallyForm{}), repo.AddTimeManually)
m.Post("/{timeid}/delete", repo.DeleteTime)
m.Group("/stopwatch", func() {
m.Post("/toggle", repo.IssueStopwatch)
m.Post("/cancel", repo.CancelStopwatch)