A small step for FT coders, a giant leap for the Users
0

7 posts in this topic

Using the API it is possible to 'nest/reparent' items using the 'parent_id' property.


Eg Creating empty AssetBuilds named Characters, Props and Sets and categorize AssetBuilds according to these AssetBuildGroups.

       assetBuildGrp   = project.createAssetBuild('Characters')

assetBuildGrpId = assetBuildGrp.getId()

assetBuild = project.getAssetBuilds()[7] # a character

assetBuild.set('parent_id',assetBuildGrpId)
 

All calculus and states nicely bubble up through the tree. Great!


But it seems that it's not a' real' feature of FTrack yet. The Project overview on the left throws a 'server error' when you try to expand nested assetbuilds.
Is it safe to Use this nesting/reparenting or should we wait for you guys to implement it properly?

A small step for our dear FTrack Coders, a giant leap for the Users !!

An 'open projectstructure' will be a critical feature in our consideration to purchase FTrack.

Share this post


Link to post
Share on other sites

Hey,

 

it is not safe yet but I can assure you we are moving towards a more open structure. It is very open behind the scenes but at the same time we are trying to have a solution that works well for most studios out of the box. But I guess a group entity might be nice to have out of the box anyways until it is fully open.

 

The asset group entity has more features enabled than what a group would need.

 

 

Let me know what your thoughts are here and we will make sure things work out for you.

 

Cheers

Share this post


Link to post
Share on other sites

Being able to reparent to create custom projectstructures is (would be) great!

 

There's a problem with reparenting sequences though...

project = ftrack.getProject(projectName)ep = project.getEpisodes()[0]                                  #valid Episodeshotlist = ep.getSequences()[1]                              #empty Sq used to Group sequencesshotlistId = shotlist.getId()sq = project.createSequence('Sq020')                   # Must createSequence() at projectLevel because of episode.createSequence() bugsq.setPriority(ftrack.Priority('None'))                       # Must set priority manualy because it's 'Urgent' by defaultsq.set(key = 'parent_id', value = shotlistId)# Error: # Traceback (most recent call last):#   File "<maya console>", line 1, in <module>#   File "C:\Temp\Ftrack\Ftrack_Plugins_winx64_b17\ftrackplugins\libdir\ftrack\ftrackAPI\FTrackCore.egg\FTrackCore\api\ftobject.py", line 112, in set#     response = self.xmlServer.action('set',data)#   File "C:\Temp\Ftrack\Ftrack_Plugins_winx64_b17\ftrackplugins\libdir\ftrack\ftrackAPI\FTrackCore.egg\FTrackCore\api\xmlserver.py", line 225, in action#     response = function(data)#   File "C:\Temp\Ftrack\Ftrack_Plugins_winx64_b17\ftrackplugins\libdir\ftrack\ftrackAPI\FTrackCore.egg\FTrackCore\api\xmlrpc27\xmlrpclib.py", line 1224, in __call__#     return self.__send(self.__name, args)#   File "C:\Temp\Ftrack\Ftrack_Plugins_winx64_b17\ftrackplugins\libdir\ftrack\ftrackAPI\FTrackCore.egg\FTrackCore\api\xmlrpc27\xmlrpclib.py", line 1578, in __request#     verbose=self.__verbose#   File "C:\Temp\Ftrack\Ftrack_Plugins_winx64_b17\ftrackplugins\libdir\ftrack\ftrackAPI\FTrackCore.egg\FTrackCore\api\xmlrpc27\xmlrpclib.py", line 1264, in request#     return self.single_request(host, handler, request_body, verbose)#   File "C:\Temp\Ftrack\Ftrack_Plugins_winx64_b17\ftrackplugins\libdir\ftrack\ftrackAPI\FTrackCore.egg\FTrackCore\api\xmlrpc27\xmlrpclib.py", line 1312, in single_request#     response.msg,# ProtocolError: <ProtocolError for ################//client/: 500 Internal Server Error> # 

This problem is probably due to the createSequence() implementation being incomplete... ?

 

 

oops ... hadn't read your post before posting this one

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
0