You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

task.go 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Copyright 2020 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package user
  4. import (
  5. "net/http"
  6. "strconv"
  7. admin_model "code.gitea.io/gitea/models/admin"
  8. "code.gitea.io/gitea/modules/context"
  9. "code.gitea.io/gitea/modules/json"
  10. )
  11. // TaskStatus returns task's status
  12. func TaskStatus(ctx *context.Context) {
  13. task, opts, err := admin_model.GetMigratingTaskByID(ctx, ctx.ParamsInt64("task"), ctx.Doer.ID)
  14. if err != nil {
  15. if admin_model.IsErrTaskDoesNotExist(err) {
  16. ctx.JSON(http.StatusNotFound, map[string]any{
  17. "error": "task `" + strconv.FormatInt(ctx.ParamsInt64("task"), 10) + "` does not exist",
  18. })
  19. return
  20. }
  21. ctx.JSON(http.StatusInternalServerError, map[string]any{
  22. "err": err,
  23. })
  24. return
  25. }
  26. message := task.Message
  27. if task.Message != "" && task.Message[0] == '{' {
  28. // assume message is actually a translatable string
  29. var translatableMessage admin_model.TranslatableMessage
  30. if err := json.Unmarshal([]byte(message), &translatableMessage); err != nil {
  31. translatableMessage = admin_model.TranslatableMessage{
  32. Format: "migrate.migrating_failed.error",
  33. Args: []any{task.Message},
  34. }
  35. }
  36. message = ctx.Tr(translatableMessage.Format, translatableMessage.Args...)
  37. }
  38. ctx.JSON(http.StatusOK, map[string]any{
  39. "status": task.Status,
  40. "message": message,
  41. "repo-id": task.RepoID,
  42. "repo-name": opts.RepoName,
  43. "start": task.StartTime,
  44. "end": task.EndTime,
  45. })
  46. }