def on_post(self, req, resp, dataset_id, dataset_dto):
"""Generates an autocomplete index with desired lang
This request may take long time to complete, so it uses tasks.
:query list langs: A list with languages to be requested
:param id dataset_id: The dataset to insert triples into
:param DTO dataset_dto: The Dataset DTO from dataset_id (from hook)
"""
try:
body = common_hooks.read_body_as_json(req)
languages = body['langs']
if not isinstance(languages, list):
raise falcon.HTTPInvalidParam(
("A list with languages in ISO 639-1 code was expected"),
"langs")
except KeyError as err:
raise falcon.HTTPMissingParam("langs")
entity_dao = data_access.EntityDAO(dataset_dto.dataset_type,
dataset_id)
# Call to the task
task = async_tasks.build_autocomplete_index.delay(dataset_id,
langs=languages)
# Create the new task
task_dao = data_access.TaskDAO()
task_obj, err = task_dao.add_task_by_uuid(task.id)
if task_obj is None:
raise falcon.HTTPNotFound(description=str(err))
task_obj["next"] = "/datasets/" + dataset_id
task_dao.update_task(task_obj)
msg = "Task {} created successfuly".format(task_obj['id'])
textbody = {"status": 202, "message": msg}
resp.location = "/tasks/" + str(task_obj['id'])
resp.body = json.dumps(textbody)
resp.content_type = 'application/json'
resp.status = falcon.HTTP_202
评论列表
文章目录