Пример #1
0
def delete(request, task_id=None):
    # figure out if this is a pulp task or a sponge task
    taskapi = TaskAPI()
    task = taskapi.info(task_id)
    if task is not None:
        command = task['method_name'].lstrip("_")
        if task['scheduler'] == 'interval':
            command = "Scheduled %s" % command
        
        if request.method == 'POST':
            form = DeleteOkayForm(request.POST)
            if form.is_valid():
                taskapi.cancel(task_id)
                messages.success(request,
                                 "Deleted task %s (%s)" % (task_id, command))
            return HttpResponseRedirect(reverse('sponge.views.tasks.list'))
        return dict(task_id=task_id,
                    command=command,
                    form=DeleteOkayForm(dict(id=task_id)))
    else:
        # must be a sponge task
        task = CeleryTaskTracker.objects.get(taskid=task_id)
        if request.method == 'POST':
            form = DeleteOkayForm(request.POST)
            if form.is_valid():
                tclass = getattr(tasks, task.taskclass)
                status = tclass.AsyncResult(task.taskid)
                task.delete()
                status.forget()
                messages.success(request,
                                 "Deleted task %s (%s)" % (task.taskid,
                                                           task.taskclass))
            return HttpResponseRedirect(reverse('sponge.views.tasks.list'))
        return dict(task_id=task.taskid,
                    command=task.taskclass,
                    form=DeleteOkayForm(dict(id=task_id)))