mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2026-05-13 06:20:24 +00:00
Previous similar PR: https://codeberg.org/forgejo/forgejo/pulls/11879. Moved strings from INI to JSON. Some directly, some with keys updated to be consistent. The latter was done carefully, making sure all usages are updated, and was tested locally. There are more deletions than insertions because some languages also had some extra empty lines removed. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/12280 Reviewed-by: Robert Wolff <mahlzahn@posteo.de>
89 lines
2.4 KiB
Go
89 lines
2.4 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package admin
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"forgejo.org/modules/queue"
|
|
"forgejo.org/modules/setting"
|
|
"forgejo.org/services/context"
|
|
)
|
|
|
|
func Queues(ctx *context.Context) {
|
|
if !setting.IsProd {
|
|
initTestQueueOnce()
|
|
}
|
|
ctx.Data["Title"] = ctx.Tr("admin.monitor.queues")
|
|
ctx.Data["PageIsAdminMonitorQueue"] = true
|
|
ctx.Data["Queues"] = queue.GetManager().ManagedQueues()
|
|
ctx.HTML(http.StatusOK, tplQueue)
|
|
}
|
|
|
|
// QueueManage shows details for a specific queue
|
|
func QueueManage(ctx *context.Context) {
|
|
qid := ctx.ParamsInt64("qid")
|
|
mq := queue.GetManager().GetManagedQueue(qid)
|
|
if mq == nil {
|
|
ctx.Status(http.StatusNotFound)
|
|
return
|
|
}
|
|
ctx.Data["Title"] = ctx.Tr("admin.monitor.queue", mq.GetName())
|
|
ctx.Data["PageIsAdminMonitor"] = true
|
|
ctx.Data["Queue"] = mq
|
|
ctx.HTML(http.StatusOK, tplQueueManage)
|
|
}
|
|
|
|
// QueueSet sets the maximum number of workers and other settings for this queue
|
|
func QueueSet(ctx *context.Context) {
|
|
qid := ctx.ParamsInt64("qid")
|
|
mq := queue.GetManager().GetManagedQueue(qid)
|
|
if mq == nil {
|
|
ctx.Status(http.StatusNotFound)
|
|
return
|
|
}
|
|
|
|
maxNumberStr := ctx.FormString("max-number")
|
|
|
|
var err error
|
|
var maxNumber int
|
|
if len(maxNumberStr) > 0 {
|
|
maxNumber, err = strconv.Atoi(maxNumberStr)
|
|
if err != nil {
|
|
ctx.Flash.Error(ctx.Tr("admin.monitor.queue.settings.maxnumberworkers.error"))
|
|
ctx.Redirect(setting.AppSubURL + "/admin/monitor/queue/" + strconv.FormatInt(qid, 10))
|
|
return
|
|
}
|
|
if maxNumber < -1 {
|
|
maxNumber = -1
|
|
}
|
|
} else {
|
|
maxNumber = mq.GetWorkerMaxNumber()
|
|
}
|
|
|
|
mq.SetWorkerMaxNumber(maxNumber)
|
|
ctx.Flash.Success(ctx.Tr("admin.monitor.queue.settings.changed"))
|
|
ctx.Redirect(setting.AppSubURL + "/admin/monitor/queue/" + strconv.FormatInt(qid, 10))
|
|
}
|
|
|
|
func QueueRemoveAllItems(ctx *context.Context) {
|
|
// Queue in Forgejo doesn't have transaction support
|
|
// So in rare cases, the queue could be corrupted/out-of-sync
|
|
// Site admin could remove all items from the queue to make it work again
|
|
qid := ctx.ParamsInt64("qid")
|
|
mq := queue.GetManager().GetManagedQueue(qid)
|
|
if mq == nil {
|
|
ctx.Status(http.StatusNotFound)
|
|
return
|
|
}
|
|
|
|
if err := mq.RemoveAllItems(ctx); err != nil {
|
|
ctx.ServerError("RemoveAllItems", err)
|
|
return
|
|
}
|
|
|
|
ctx.Flash.Success(ctx.Tr("admin.monitor.queue.settings.remove_all_items.success"))
|
|
ctx.Redirect(setting.AppSubURL + "/admin/monitor/queue/" + strconv.FormatInt(qid, 10))
|
|
}
|