create_asset_from_file: added extra_where param to limit updatable nodes.

This commit is contained in:
2016-07-05 17:28:19 +02:00
parent 86b7358717
commit d03cf7f73f

View File

@@ -78,6 +78,7 @@ class Node(List, Find, Create, Post, Update, Delete, Replace):
@classmethod
def create_asset_from_file(cls, project_id, parent_node_id, asset_type, filename,
always_create_new_node=False,
extra_where=None,
api=None):
"""Uploads the file to the Cloud and creates an asset node.
@@ -91,6 +92,9 @@ class Node(List, Find, Create, Post, Update, Delete, Replace):
:param filename: path of the file to upload. Must be readable.
:param always_create_new_node: when True, a new node is always created,
possibly with the same name & parent as an existing one.
:param extra_where: dict of properties to use, in addition to project, node_type
and name, to find any existing node. Use this to restrict the
nodes that may be re-used to attach this file to.
:returns: the updated/created node
:rtype: Node
"""
@@ -117,6 +121,9 @@ class Node(List, Find, Create, Post, Update, Delete, Replace):
if not always_create_new_node:
# Try to find an existing one to see if there is anything to update.
where = copy.deepcopy(basic_properties)
if extra_where:
where.update(extra_where)
existing_node = cls.find_first({'where': basic_properties}, api=api)
if existing_node:
# Just update the file ID and we're done.