openflexure-microscope-server/openflexure_microscope/common/flask_labthings/views/tasks.py
2020-01-13 16:24:32 +00:00

50 lines
1.1 KiB
Python

from flask import abort, url_for
from ..decorators import marshal_with, ThingProperty, Tag
from ..resource import Resource
from ..schema import TaskSchema
from openflexure_microscope.common.labthings_core import tasks
@ThingProperty
class TaskList(Resource):
@marshal_with(TaskSchema(many=True))
def get(self):
"""
List of all session tasks
"""
return tasks.tasks()
@Tag("properties")
class TaskResource(Resource):
@marshal_with(TaskSchema())
def get(self, id):
"""
Show status of a session task
Includes progress and intermediate data.
"""
try:
task = tasks.dict()[id]
except KeyError:
return abort(404) # 404 Not Found
return task
@marshal_with(TaskSchema())
def delete(self, id):
"""
Terminate a running task.
If the task is finished, deletes its entry.
"""
try:
task = tasks.dict()[id]
except KeyError:
return abort(404) # 404 Not Found
task.terminate()
return task