Managing jobs¶
Jobs can be used to display feedback to users in the ftrack web interface when performing long running tasks in the API.
To create a job use Session.create()
:
user = # Get a user from ftrack.
job = session.create('Job', {
'user': user,
'status': 'running'
})
The created job will appear as running in the jobs menu for the specified user. To set a description on the job, add a dictionary containing description as the data key:
Note
In the current version of the API the dictionary needs to be JSON serialised.
import json
job = session.create('Job', {
'user': user,
'status': 'running',
'data': json.dumps({
'description': 'My custom job description.'
})
})
When the long running task has finished simply set the job as completed and continue with the next task.
job['status'] = 'done'
session.commit()
Attachments¶
Job attachments are files that are attached to a job. In the ftrack web interface these attachments can be downloaded by clicking on a job in the Jobs menu.
To get a job’s attachments through the API you can use the job_components relation and then use the ftrack server location to get the download URL:
server_location = session.query(
'Location where name is "ftrack.server"'
).one()
for job_component in job['job_components']:
print 'Download URL: {0}'.format(
server_location.get_url(job_component['component'])
)
To add an attachment to a job you have to add it to the ftrack server location and create a jobComponent:
server_location = session.query(
'Location where name is "ftrack.server"'
).one()
# Create component and name it "My file".
component = session.create_component(
'/path/to/file',
data={'name': 'My file'},
location=server_location
)
# Attach the component to the job.
session.create(
'JobComponent',
{'component_id': component['id'], 'job_id': job['id']}
)
session.commit()
Note
The ftrack web interface does only support downloading one attachment so attaching more than one will have limited support in the web interface.