mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-22 05:15:22 +02:00
feat(runner): delete runner from admin html page
This commit is contained in:
parent
5b989e2a11
commit
fbb9f437a6
@ -101,6 +101,7 @@ type FindRunnerOptions struct {
|
|||||||
OwnerID int64
|
OwnerID int64
|
||||||
Sort string
|
Sort string
|
||||||
Filter string
|
Filter string
|
||||||
|
WithDeleted bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (opts FindRunnerOptions) toCond() builder.Cond {
|
func (opts FindRunnerOptions) toCond() builder.Cond {
|
||||||
@ -115,6 +116,9 @@ func (opts FindRunnerOptions) toCond() builder.Cond {
|
|||||||
if opts.Filter != "" {
|
if opts.Filter != "" {
|
||||||
cond = cond.And(builder.Like{"name", opts.Filter})
|
cond = cond.And(builder.Like{"name", opts.Filter})
|
||||||
}
|
}
|
||||||
|
if !opts.WithDeleted {
|
||||||
|
cond = cond.And(builder.IsNull{"deleted"})
|
||||||
|
}
|
||||||
return cond
|
return cond
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,9 +212,9 @@ func GetRunnerByToken(token string) (*Runner, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UpdateRunner updates runner's information.
|
// UpdateRunner updates runner's information.
|
||||||
func UpdateRunner(ctx context.Context, r *Runner, cols ...string) (err error) {
|
func UpdateRunner(ctx context.Context, r *Runner, cols ...string) error {
|
||||||
e := db.GetEngine(ctx)
|
e := db.GetEngine(ctx)
|
||||||
|
var err error
|
||||||
if len(cols) == 0 {
|
if len(cols) == 0 {
|
||||||
_, err = e.ID(r.ID).AllCols().Update(r)
|
_, err = e.ID(r.ID).AllCols().Update(r)
|
||||||
} else {
|
} else {
|
||||||
@ -219,6 +223,12 @@ func UpdateRunner(ctx context.Context, r *Runner, cols ...string) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteRunner(ctx context.Context, r *Runner) error {
|
||||||
|
e := db.GetEngine(ctx)
|
||||||
|
_, err := e.Delete(r)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// FindRunnersByRepoID returns all workers for the repository
|
// FindRunnersByRepoID returns all workers for the repository
|
||||||
func FindRunnersByRepoID(repoID int64) ([]*Runner, error) {
|
func FindRunnersByRepoID(repoID int64) ([]*Runner, error) {
|
||||||
var runners []*Runner
|
var runners []*Runner
|
||||||
|
@ -28,7 +28,7 @@ var WithRunner = connect.WithInterceptors(connect.UnaryInterceptorFunc(func(unar
|
|||||||
token := request.Header().Get("X-Runner-Token") // TODO: shouldn't be X-Runner-Token, maybe X-Runner-UUID
|
token := request.Header().Get("X-Runner-Token") // TODO: shouldn't be X-Runner-Token, maybe X-Runner-UUID
|
||||||
runner, err := bots_model.GetRunnerByToken(token)
|
runner, err := bots_model.GetRunnerByToken(token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if _, ok := err.(*bots_model.ErrRunnerNotExist); ok {
|
if _, ok := err.(bots_model.ErrRunnerNotExist); ok {
|
||||||
return nil, status.Error(codes.Unauthenticated, "unregistered runner")
|
return nil, status.Error(codes.Unauthenticated, "unregistered runner")
|
||||||
}
|
}
|
||||||
return nil, status.Error(codes.Internal, err.Error())
|
return nil, status.Error(codes.Internal, err.Error())
|
||||||
|
@ -44,6 +44,7 @@ func Runners(ctx *context.Context) {
|
|||||||
},
|
},
|
||||||
Sort: ctx.Req.URL.Query().Get("sort"),
|
Sort: ctx.Req.URL.Query().Get("sort"),
|
||||||
Filter: ctx.Req.URL.Query().Get("q"),
|
Filter: ctx.Req.URL.Query().Get("q"),
|
||||||
|
WithDeleted: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
count, err := bots_model.CountRunners(opts)
|
count, err := bots_model.CountRunners(opts)
|
||||||
@ -122,11 +123,26 @@ func EditRunnerPost(ctx *context.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DeleteRunner response for deleting a runner
|
// DeleteRunner response for deleting a runner
|
||||||
func DeleteRunner(ctx *context.Context) {
|
func DeleteRunnerPost(ctx *context.Context) {
|
||||||
|
runner, err := bots_model.GetRunnerByID(ctx.ParamsInt64(":runnerid"))
|
||||||
|
if err != nil {
|
||||||
|
log.Warn("DeleteRunnerPost.GetRunnerByID failed: %v, url: %s", err, ctx.Req.URL)
|
||||||
|
ctx.ServerError("DeleteRunnerPost.GetRunnerByID", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = bots_model.DeleteRunner(ctx, runner)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn("DeleteRunnerPost.UpdateRunner failed: %v, url: %s", err, ctx.Req.URL)
|
||||||
|
ctx.Flash.Warning(ctx.Tr("admin.runners.delete_failed"))
|
||||||
|
ctx.Redirect(setting.AppSubURL + "/admin/runners/" + url.PathEscape(ctx.Params(":runnerid")))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Info("DeleteRunnerPost success: %s", ctx.Req.URL)
|
||||||
|
|
||||||
ctx.Flash.Success(ctx.Tr("admin.runners.deletion_success"))
|
ctx.Flash.Success(ctx.Tr("admin.runners.deletion_success"))
|
||||||
ctx.JSON(http.StatusOK, map[string]interface{}{
|
ctx.Redirect(setting.AppSubURL + "/admin/runners/")
|
||||||
"redirect": setting.AppSubURL + "/admin/runners",
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -629,7 +629,7 @@ func RegisterRoutes(m *web.Route) {
|
|||||||
m.Group("/runners", func() {
|
m.Group("/runners", func() {
|
||||||
m.Get("", admin.Runners)
|
m.Get("", admin.Runners)
|
||||||
m.Combo("/{runnerid}").Get(admin.EditRunner).Post(bindIgnErr(forms.AdminEditRunnerForm{}), admin.EditRunnerPost)
|
m.Combo("/{runnerid}").Get(admin.EditRunner).Post(bindIgnErr(forms.AdminEditRunnerForm{}), admin.EditRunnerPost)
|
||||||
m.Post("/{runnerid}/delete", admin.DeleteRunner)
|
m.Post("/{runnerid}/delete", admin.DeleteRunnerPost)
|
||||||
})
|
})
|
||||||
}, func(ctx *context.Context) {
|
}, func(ctx *context.Context) {
|
||||||
ctx.Data["EnableOAuth2"] = setting.OAuth2.Enable
|
ctx.Data["EnableOAuth2"] = setting.OAuth2.Enable
|
||||||
|
@ -48,9 +48,9 @@
|
|||||||
<div class="ui divider"></div>
|
<div class="ui divider"></div>
|
||||||
|
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<button class="ui green button">{{.locale.Tr "admin.runners.update_runner"}}</button>
|
<button type="submit" class="ui green button">{{.locale.Tr "admin.runners.update_runner"}}</button>
|
||||||
<div class="ui red button delete-button" data-url="{{$.Link}}/delete" data-id="{{.Runner.ID}}">
|
<button type="button" class="ui red button delete-button show-modal" data-modal="#runner-delete-modal">
|
||||||
{{.locale.Tr "admin.runners.delete_runner"}}</div>
|
{{.locale.Tr "admin.runners.delete_runner"}}</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@ -64,14 +64,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="ui small basic delete modal">
|
<div class="ui small modal" id="runner-delete-modal">
|
||||||
<div class="ui icon header">
|
<div class="header">
|
||||||
{{svg "octicon-trash"}}
|
{{.locale.Tr "admin.runners.delete_header"}}
|
||||||
{{.locale.Tr "settings.delete_account_title"}}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<p>{{.locale.Tr "settings.delete_account_desc"}}</p>
|
<div class="ui warning message text left">
|
||||||
|
{{.locale.Tr "admin.runnners.delete_notice" | Safe}}
|
||||||
|
</div>
|
||||||
|
<form class="ui form" action="{{.Link}}/delete" method="post">
|
||||||
|
{{.CsrfTokenHtml}}
|
||||||
|
<input type="hidden" name="action" value="delete">
|
||||||
|
<div class="text right actions">
|
||||||
|
<div class="ui cancel button">{{.locale.Tr "settings.cancel"}}</div>
|
||||||
|
<button class="ui red button">{{.locale.Tr "admin.runners.delete_confirm"}}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{{template "base/delete_modal_actions" .}}
|
|
||||||
</div>
|
</div>
|
||||||
{{template "base/footer" .}}
|
{{template "base/footer" .}}
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
<td>{{TimeSinceUnix .LastOnline $.locale}}</td>
|
<td>{{TimeSinceUnix .LastOnline $.locale}}</td>
|
||||||
<td class="runner-ops">
|
<td class="runner-ops">
|
||||||
<a href="{{$.Link}}/{{.ID}}">{{svg "octicon-pencil"}}</a>
|
<a href="{{$.Link}}/{{.ID}}">{{svg "octicon-pencil"}}</a>
|
||||||
<a class="runner-ops-delete" href="{{$.Link}}/{{.ID}}/delete">{{svg "octicon-x-circle"}}</a>
|
<!--<a class="runner-ops-delete show-modal" data-modal="#runner-delete-modal">{{svg "octicon-x-circle"}}</a>-->
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user