Use safe_load_all instead of safe_load.

This commit is contained in:
Felipe Monteiro 2017-07-21 15:58:14 +01:00
parent d50c9cef2e
commit 51861a15f9
2 changed files with 12 additions and 5 deletions

View File

@ -50,7 +50,7 @@ class DocumentsResource(api_base.BaseResource):
document_data = req.stream.read(req.content_length or 0)
try:
document = yaml.safe_load(document_data)
documents = [d for d in yaml.safe_load_all(document_data)]
except yaml.YAMLError as e:
error_msg = ("Could not parse the document into YAML data. "
"Details: %s." % e)
@ -59,19 +59,20 @@ class DocumentsResource(api_base.BaseResource):
# Validate the document before doing anything with it.
try:
doc_validation = document_validation.DocumentValidation(document)
for doc in documents:
document_validation.DocumentValidation(doc)
except deckhand_errors.InvalidFormat as e:
return self.return_error(resp, falcon.HTTP_400, message=e)
try:
created_document = db_api.document_create(document)
created_documents = db_api.documents_create(documents)
except db_exc.DBDuplicateEntry as e:
return self.return_error(resp, falcon.HTTP_409, message=e)
except Exception as e:
return self.return_error(resp, falcon.HTTP_500, message=e)
resp.status = falcon.HTTP_201
resp.body = json.dumps(created_document)
resp.body = json.dumps(created_documents)
def _check_document_exists(self):
pass

View File

@ -106,6 +106,12 @@ def drop_db():
models.unregister_models(get_engine())
def documents_create(documents, session=None):
"""Create a set of documents."""
created_docs = [document_create(doc, session) for doc in documents]
return created_docs
def document_create(values, session=None):
"""Create a document."""
values = values.copy()
@ -117,5 +123,5 @@ def document_create(values, session=None):
with session.begin():
document.update(values)
document.save(session=session)
return document.to_dict()