I am using the ftrack API to add a note to a shot, and I would like it to exactly emulate what happens when you get client feedback from a client review. I am able to create the note, add components (attachemnts) and set it to a "Client feedback" category, which gets me nearly there. However the "create_note()" function requires an "author" argument and I don't quite understand this. The author apparently needs to be an ftrack user, however I would like to tie this note to be from an arbitrary client who does not have a license (I am generating the note content separately from a sort of custom Review Session).
I've queried an existing client feedback note to see how the author is set and where it stores that information, but it seems that the author is just the user that ran the "Transfer feedback" action on the client review, and I cannot find where it stores the client's identity at all.
So basically my questions are two: first, how do you create a "Client feedback" note without using an existing ftrack user as the author. And second, where do you set the client's name on the note so that it shows up in the ftrack GUI with the client's name?
Here are some code snippets:
def add_note_to_task(task, author, note_string, category='Client feedback'):
# get note category
note_category = session.query('NoteCategory where name is "{}"'.format(category)).first()
# create note
note = task.create_note(
note_string,
author=author, # <---- so... what to do here?
category=note_category
)
def query_existing_note():
shot = session.query("Shot where name is '{}'".format("Name of shot that you know has client feedback")).one()
asset_version = session.query("AssetVersion where asset.parent.id is '{}'".format(shot['id'])).first()
notes = asset_version['notes']
print(dict(notes[0]))
# ^^ nothing in here seems to indicate who the client "author" is...
# this does however have an "author" key, which seems to just be the ftrack user
# who merged this from the client review.
# So how does ftrack know who the client is?