How to create new entity types with python api
2 2

4 posts in this topic

Hello,

My Question is: How can I create new entity types using the python api.

when i create an new session object with the python api using:

session = ftrack_api.Session(server_url=server_url,
                             api_key=api_key,
                             api_user=api_user)

I can query all types using:

session_types = session.types

Now i am checking if all entity types our pipeline requires are present in this session using something like:

session_types.get(required_entity)

However if the expected entity types are NOT present -> meaning FTrack is not yet configured in the way the it needs to be for the pipeline.
I want to create the missing entity types using the python api.

In the GUI I would simply create new objects for each missing entity type like this:
Create_Objects.JPG.9ffd35501ef88b29e2c7e52d16ac8180.JPG

And then I would create a schema using the required objects / (entity types)
and make sure that the projects are always using this schema:

Schema.thumb.JPG.8f361e5da008fbf8ded643751f5116fc.JPG
 

But I am having trouble to understand the correct way of doing so using the python api.
As far as I understand the entity types are generated dynamically at the beginning of a session.
The "StandardFactory" class takes care of it by creating the types specified in the existing "ProjectSchema" 's

Workflow like so ?
Create a new ProjectSchema?
While doing so I pass in the new Entity Types I want to have created with this schema?
But how can I define those new entity types?

 

Some informatison from the docs I collected so far: 
" When a Session is constructed it fetches schema details from the connected server and then calls an Entity factory to create classes from those schemas. It does this by emitting a synchronous event, ftrack.api.session.construct entity-type, for each schema and expecting a class object to be returned. "
http://ftrack-python-api.rtd.ftrack.com/en/stable/working_with_entities.html#customising-entity-types
 

Regarding working with Project Schema's I only found these small snippets from the docs which do NOT show how to create a new schema:
http://ftrack-python-api.rtd.ftrack.com/en/stable/example/project.html?highlight=schemas
 

The information provided in the "Working with entities - Customising entity types" also links to this page "Understanding sessions  - Configuring plugins" and the provided python file "cunstruct_entity_type.py" shows how to register a plugin but does not show how to actually create a new entity type.

 

I hope someone can point me to the right direction!

Thank you in advance,

Lukas :)

Share this post


Link to post
Share on other sites

Hi Lukas,

Thank you for posting and welcome to the forums!

To manage the object types and the project schemas you have to go through the Web UI today. In future versions of ftrack we will most likely add support for this through the API but due to some underlying complexity of how the schemas are modeled we have currently limited API access on this to read (and locked down update/create operations).

Share this post


Link to post
Share on other sites

Hi Mattias,

thank you for the quick reply and the welcoming :)
That's unfortunate to hear not having access through the api for proper entity configuration. 
I can see this not being an easy task to tackle, hiding the underlying complexity from the api users but still giving enough control for flexible configurations.

Do you have any information about when this might be addressed?
(Talking about just a couple of months or more like a year or so?)

Best
Lukas

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
2 2