func (pc *publishController) PublishOrDiscard(context *admin.Context) { var request = context.Request var ids = request.Form["checked_ids[]"] if scheduler := pc.Publish.WorkerScheduler; scheduler != nil { jobResource := scheduler.JobResource result := jobResource.NewStruct().(worker.QorJobInterface) if request.Form.Get("publish_type") == "discard" { result.SetJob(scheduler.GetRegisteredJob("Discard")) } else { result.SetJob(scheduler.GetRegisteredJob("Publish")) } workerArgument := &QorWorkerArgument{IDs: ids} if t, err := utils.ParseTime(request.Form.Get("scheduled_time"), context.Context); err == nil { workerArgument.ScheduleTime = &t } result.SetSerializableArgumentValue(workerArgument) jobResource.CallSave(result, context.Context) scheduler.AddJob(result) http.Redirect(context.Writer, context.Request, context.URLFor(jobResource), http.StatusFound) } else { records := pc.searchWithPublishIDs(context.GetDB().Set(publishDraftMode, true), context.Admin, ids) if request.Form.Get("publish_type") == "publish" { pc.Publish.Publish(records...) } else if request.Form.Get("publish_type") == "discard" { pc.Publish.Discard(records...) } http.Redirect(context.Writer, context.Request, context.Request.RequestURI, http.StatusFound) } }
func (wc workerController) RunJob(context *admin.Context) { if newJob := wc.Worker.saveAnotherJob(context.ResourceID); newJob != nil { wc.Worker.AddJob(newJob) } else { context.AddError(errors.New("failed to clone job " + context.ResourceID)) } http.Redirect(context.Writer, context.Request, context.URLFor(wc.Worker.JobResource), http.StatusFound) }