mitch.s

Members
  • Content Count

    72
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by mitch.s

  1. Removing a 'Note_Component' Removing the component itself works fine. I query the component by id to get the existing_component ; server_location = session.query('Location where name is "ftrack.server"').one() existing_component = session.query('Component where id is {0}'.format(COMPONENT_ID)).one() server_location.remove_component(existing_component) session.commit() #must close after remove ! session.close() but it seems like some data still remains in the Note_Component (a Note_Component without a Component ?) Do I need to clean this up by hand or is there a more straightforward method? If by hand, how?
  2. Hi everybody is there a simple way to set a marked note as 'completed' through the API? Setting the separate properties manually seems clunky and gives me the feeling that I'm missing something... If we set a note as 'completed' using the web-app, only the ['completed_at '] property is set. Do we need to set properties : ['completed_by_id'] ['completed_at'] ...? (maybe there are other properties?) Thanks
  3. Great! Any spoilers on how this will work/look like. Now I use Assetbuilds as a container/category to group/nest Assetbuilds and Sequences as a container/category to group/nest Shots Is it comparable to the method we use now for grouping tasks etc. Then I overwrite the parent attributes of the tasks. From there on complex querying can be done by hand Will there be Category/Group/... entities? Functions for querying that are powerful and easy to use? setParent () getParents ( [ofType], [filter], [recursive] ) pseudo code example: getParents (type=ALL, filter=HighPriority , recursive=true ) getChildren ( [ofType], [filter], [recursive] ) pseudo code example: getChildren (type=AnimTasks, filter=InProgress, recursive=false ) or simply getRelatives (...) etc
  4. Will the 1st option stay available in future releases? Actions are great in many situations. But sometimes we want to automate without the user explicitly launching an action. Eg. When the status of a last version changes, we may want to set the status of its parent task and set the status of all previous versions automatically. Or the other way round, When a super sets the status of a task, change the status of the last version in this task. Will undos work on custom event handling?
  5. Actions and Event handling will probably do the trick.
  6. This looks very promising. Does it work right now (actions seem to be available...) ? If it does, we'll check it out and post a step by step on how we did it.
  7. Couldn't be more simple... Thx
  8. How do you use custom attributes with the API ? Create/Delete/Edit, Get/Set, formulas, ... We could work with metadata but it would be nice to use custom attributes in some cases. I tried using the private functions but it doesn't work (as expected) :Attribute with name 'anAttr' was created using the FTrack UIsh.attributes.__getattr__('anAttr')AttributeError: 'NoneType' object has no attribute '__getattr__'sh.attributes__setattr__('anAttr','POOO')AttributeError: 'NoneType' object has no attribute 'anAttr'
  9. Is there a way to query Task Templates from a schema and add them to episodes/sequences/shots ?
  10. Is there a way to query the mov associated with a thumb or vice versa?
  11. Another example: You could run a custom script to update the buttons/thumbs next to shots/tasks to play a mov with the latest approved version. Wouldn't that be Nice?!? (Not that you cant right now but it would be easier to share functionality with other less technical users)
  12. Yes, but if you want to run a script to 'update' all shots and tasks with the correct thumb, you will need to set it with the 'thumbid' because you are not creating the thumb at that particular moment. Having some kind of script editor inside the FTrack UI would be great for this purpose too... PS: Being able to set all properties is one of the great things about FTrack .As long as you use this method with care of course! Eg. to create (fake)group entities by setting 'parent_id' allows an open project structure...
  13. Thx Carl, works as expected. A small footnote: To assign a thumb duplicate/instance the setThumbnail() with localpath or with hostedpath (obtained by getThumbnail() ) does not work. You must set the instance thumbnail using the 'thumbid': thumbPathLocal = '###LOCALPATH###/thumbnail.jpg'assetVersion.createThumbnail(thumbPathLocal)thumbId = assetVersion.get('thumbid')task.set('thumbid', thumbId)
  14. mitch.s

    Assetbuild status

    The status of an Assetbuild stays 'Not Started' even if all its tasks are 'Approved' and that the status bar of the asset is fully green. Assetbuilds can be linked to Shots. Thats great ! Apart from showing which Assetbuilds are used in what shots, the main purpose of this is (I think) to indicate if a shot can be started. This is in theory, when all the Assetbuilds linked to a shot are set to approved. But if one wants to see the status (or statusbar) of an Assetbuild it's not possible without the managers manual intervention. _______________________________________________________________________________________________________________ Of course the problem is more complex because pipelines are not always linear. [All linked AssetBuilds Approved => Shot ready to start] Eg.: (hard to explain) - Some specific Assetbuilds 'Setup task' are approved (eg Main characters) => Shot-Animation ready to start. - Some specific Assetbuilds 'Lookdev task' are approved. (eg Set) => The Shot-Lighting ready to start. It's those more complex situations that are hard to follow up manually and this is where management softs come in handy. A solution for this could be to add 'Shot Animation Ready' and 'Shot Lighting Ready' attributes to Assetbuilds or Shots. Those could switch to 'True' when an Assetbuilds 'Setup' and 'Lookdev' tasks(respectively) are set to approved. (by running an API script) ? But how do we visually emphasize these custom statuses in a shots linked-assetbuilds tab ? Or we'd almost need to have multiple statuses per Assetbuild (which is actually true but might be a step to far...) _______________________________________________________________________________________________________________ What is your vision on handling those complex cases? Maybe FTrack needs a manager to approve an Assetbuild manually... ? (which is safe and not that bad after all...).
  15. A 2nd thing... When uploading movs through the FTrack UI you can 'overlayplay' the mov by clicking the icon(thumbnail) next to the version (1). When doing it throught the API you need to browse to the composition and click the play button to trigger the overlayplayer. That's not very intuitive. - Is there a way to trigger the overlayplayer by clicking (1) for movs inserted with the API? [YES ADD THUMBNAIL ON ASSETVERSION] - In extension, to avoid openening the task UI on the left before you preview, is it possible (using code) to trigger the overlayplayer with the last assetversion (instead of a thumb) of the task by clicking (2)?
  16. Ok. I see how I should use Assets and Assetversions in practice. Having seen how to use them I still have difficulties to grasp the concept of assets. (I thought it was just a necessary code layer for architectural purposes). From reading the definition of an asset I understand that it's some kind of container for assetversions. In this logic I would tend to keep Assets an Assetversions inside the same task/entity ... I can't discern why the asset MUST be created on the shot and the assetversion on the task. Purely hypothetically : What if on the Sequence level (or even Episode level) I created an (sequence)Asset and differentiated it's child Assetversions on shot-tasks by using adequate nomenclature ? What if on top of that I created (shot)Assets on shots in that sequence with its own Assetversions on other or even the same shot-tasks ? Is there an advanced reason why one would want to 'nest' Assets in that way or why it's even made possible in FTrack? Could you explain the concept of Assets more in depth please? Thanks in advance.
  17. Ok... Custom encoded/hosted movs play fine in the FTrackApp when the movs are added (using python) to shots but not when they are added (using python) to tasks. In detail:____________________________________________________________________________________________________________ 1) We have a SHOT with a TASK in it. 2) encoded .mp4 and .webm using ffmpeg 3) hosted the mov files on our custom server (not the ftrack one). 4) configure our web server to serve the encoded files. 5a) Adding the movie to the SHOT: assetType=####assetName=####asset = ftrack.Task(SHOT_Id).createAsset(assetName, assetType)assetVersion = asset.createVersion(taskid=SHOT_Id)# Create a mp4 componentreviewCompMP4 = assetVersion.createComponent(name='ftrackreview-mp4', file='http://##CUSTOM_WEB_URL##/TestMov.mp4')metaData = json.dumps({'frameIn' : 0,'frameOut' : 141,'frameRate' : 25})reviewCompMP4.setMeta(key='ftr_meta', value=metaData)# Create a webm componentreviewCompWEBM = assetVersion.createComponent(name='ftrackreview-mp4', file='http://##CUSTOM_WEB_URL##/TestMov.webm')metaData = json.dumps({'frameIn' : 0,'frameOut' : 141,'frameRate' : 25})reviewCompWEBM.setMeta(key='ftr_meta', value=metaData)asset.publish()- Clicking the icon next to the version [NOT WORKING] - Clicking the play button underneath the component [WORKING] - Appearing and Playing in the FTrackReview app [WORKING] 5b) Adding the movie to the TASK: assetType=####assetName=####asset = ftrack.Task(TASK_Id).createAsset(assetName, assetType)assetVersion = asset.createVersion(taskid=TASK_Id)# Create a mp4 componentreviewCompMP4 = assetVersion.createComponent(name='ftrackreview-mp4', file='http://##CUSTOM_WEB_URL##/TestMov.mp4')metaData = json.dumps({'frameIn' : 0,'frameOut' : 141,'frameRate' : 25})reviewCompMP4.setMeta(key='ftr_meta', value=metaData)# Create a webm componentreviewCompWEBM = assetVersion.createComponent(name='ftrackreview-mp4', file='http://##CUSTOM_WEB_URL##/TestMov.webm')metaData = json.dumps({'frameIn' : 0,'frameOut' : 141,'frameRate' : 25})reviewCompWEBM.setMeta(key='ftr_meta', value=metaData)asset.publish()- Clicking the icon next to the version [NOT WORKING] - Clicking the play button underneath the component [WORKING] - Appearing and Playing in the FTrackReview app [NOT WORKING] _____________________________________________________________________________________________________________ So, we're almost there... How do you play movs in the FTrackReview app that are added (using API) to TASKS ? (5b) How do you trigger movs added with the API by clicking the icon next to the version ? (5a and 5b) Any suggestions?
  18. The component was created before the asset and assetversion were explicitly published with asset.publish(). Once an asset(version) has been explicitly published, there's no problem creating a component. Also if you create components just after you created the asset/assetversion don't forget asset.publish().
  19. The problem remains. We tried the try/catch workaround but the error slips through. Error 10053 keeps raising it's ugly head, making FTrack API scripting useless (probably for windows only???) In other words we can test scripts by executing them several times. But we can't write proper custom submit/publish scripts... Could someone save us from our miserable plight please?
  20. In that case something similar to google docs spreadsheet would be nice!