gitea源码

status.go 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package issue
  4. import (
  5. "context"
  6. "code.gitea.io/gitea/models/db"
  7. issues_model "code.gitea.io/gitea/models/issues"
  8. user_model "code.gitea.io/gitea/models/user"
  9. "code.gitea.io/gitea/modules/log"
  10. notify_service "code.gitea.io/gitea/services/notify"
  11. )
  12. // CloseIssue close an issue.
  13. func CloseIssue(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, commitID string) error {
  14. var comment *issues_model.Comment
  15. if err := db.WithTx(ctx, func(ctx context.Context) error {
  16. var err error
  17. comment, err = issues_model.CloseIssue(ctx, issue, doer)
  18. if err != nil {
  19. if issues_model.IsErrDependenciesLeft(err) {
  20. if _, err := issues_model.FinishIssueStopwatch(ctx, doer, issue); err != nil {
  21. log.Error("Unable to stop stopwatch for issue[%d]#%d: %v", issue.ID, issue.Index, err)
  22. }
  23. }
  24. return err
  25. }
  26. _, err = issues_model.FinishIssueStopwatch(ctx, doer, issue)
  27. return err
  28. }); err != nil {
  29. return err
  30. }
  31. notify_service.IssueChangeStatus(ctx, doer, commitID, issue, comment, true)
  32. return nil
  33. }
  34. // ReopenIssue reopen an issue.
  35. // FIXME: If some issues dependent this one are closed, should we also reopen them?
  36. func ReopenIssue(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, commitID string) error {
  37. comment, err := issues_model.ReopenIssue(ctx, issue, doer)
  38. if err != nil {
  39. return err
  40. }
  41. notify_service.IssueChangeStatus(ctx, doer, commitID, issue, comment, false)
  42. return nil
  43. }