Using entity links¶
A link can be used to represent a dependency or another relation between two entities in ftrack.
There are two types of entities that can be linked:
- Versions can be linked to other asset versions, where the link entity type is AssetVersionLink.
- Objects like Task, Shot or Folder, where the link entity type is TypedContextLink.
Both AssetVersion and TypedContext objects have the same relations incoming_links and outgoing_links. To list the incoming links to a Shot we can use the relationship incoming_links:
for link in shot['incoming_links']:
print link['from'], link['to']
In the above example link[‘to’] is the shot and link[‘from’] could be an asset build or something else that is linked to the shot. There is an equivalent outgoing_links that can be used to access outgoing links on an object.
To create a new link between objects or asset versions create a new TypedContextLink or AssetVersionLink entity with the from and to properties set. In this example we will link two asset versions:
session.create('AssetVersionLink', {
'from': from_asset_version,
'to': to_asset_version
})
session.commit()
Using asset version link shortcut¶
Links on asset version can also be created by the use of the uses_versions and used_in_versions relations:
rig_version['uses_versions'].append(model_version)
session.commit()
This has the same result as creating the AssetVersionLink entity as in the previous section.
Which versions are using the model can be listed with:
for version in model_version['used_in_versions']:
print '{0} is using {1}'.format(version, model_version)