Jump to content

Ftrack Connect Plugin and Integration


Evan Hale

Recommended Posts

Hello,

I would love to get some assistance with ftrack Connect. We are trying to migrate to 2.0 after not making much use of the first version.

One feature we would like to use is uploading to specific locations. It us unclear if/how this is possible however. I added a location using a location plugin but I am not sure how to specify what location ftrack connect is uploading to. In fact, it seems to always just upload to ftrack.unmanaged and keep my local filepath. Do I need to create a custom action for uploading to alternative locations outside of the action provided by ftrack connect or is there a way to specify where connect uploads to?

Secondly, we would love to use the integrations with Adobe, and later on other software as well. But it is very unclear how this works. I downloaded the ftrack plugin for adobe and the connect plugin. I can start photoshop from connect but the ftrack plugin is not located in the adobe plugins list. I tracked it down under Window -> Extensions (Legacy) put it just comes up with an error screen saying Connect is not running even when it is. Clicking any of the links on the plugin (screenshot attached) does not seem to do anything either.

 

image.png

Link to comment
Share on other sites

Just updating as I make progress.

I can see the location plugin registering in the logs and that it registers the location object (although it seems to do it twice):

2022-09-13 22:39:03,757     INFO MainThread (0026) fcp.managed_location - Connect plugin discovered
2022-09-13 22:39:04,087     INFO MainThread (0023) fcp.managed_location - Location: <Location("floyd.managed", 93f12b72-575d-484d-b372-ce6d4522bb18)>
2022-09-13 22:39:04,580     INFO MainThread (0023) fcp.managed_location - Location: <Location("floyd.managed", 93f12b72-575d-484d-b372-ce6d4522bb18)>

However I am still unable to import from these locations. I even tried assigning the task to myself to see if it was a permission error or something. I also noticed when I did this it did not appear in the "My Tasks" tab of the extension:

image.png.f7562f76754e42be5f3767acb8687850.png

image.png.4e95e9c155eb95cc51c493e0d9b78327.png

 

Here is my plugin code:

import ftrack_api
import os
import sys
import logging

logger = logging.getLogger('fcp.managed_location')

RESOURCE_DIRECTORY = os.path.abspath(
    os.path.join(os.path.dirname(__file__), '..', '..', 'resource', 'fcp-ftrack-locations')
)
logger.info(f"Resource Directory: {RESOURCE_DIRECTORY}")

if RESOURCE_DIRECTORY not in sys.path:
    sys.path.append(RESOURCE_DIRECTORY)
    
from fcp.ftrack.locations import managed

def configure_location(event):
    session = event['data']['session']
    
    location = managed.get_managed_location(session)
    logger.info(f"Location: {location}")
    
def register(session, **kw):
    if not isinstance(session, ftrack_api.Session):
        return
    logger.info("Connect plugin discovered")
    
    session.event_hub.subscribe(
        'topic=ftrack.api.session.configure-location',
        configure_location
    )

and the get_managed_location method:

def get_managed_location(session: ftrack_api.Session) -> ftrack_api.entity.location.Location:
	location = session.ensure('Location', {'name': 'floyd.managed'})
	location.accessor = ServerAccessor(FILE_SERVER)
	location.structure = ProjectMapStructure(location.session)
	location.priority = 10
	return location

 

We have some custom logic with the ServerAccessor and ProjectMapStructure but get_managed_location works as intended in the multitude of other areas we use it so I doubt it has to do with that. 

 

Link to comment
Share on other sites

Hi @Evan Hale if the location is found in connect, but not in the integration, is likely you are just registering just to the configure-location.
Please try to add these lines too and see if does work:

   api_object.event_hub.subscribe(
        'topic=ftrack.connect.application.launch',
        modify_application_launch
    )

    # Location will be available from actions
    api_object.event_hub.subscribe(
        'topic=ftrack.action.launch',
        modify_application_launch
    )

subscribing to these events should nake the location within the integrations too.
here the location where this snippet has been taken from, so you have full reference

Hope it helps
L.

 

Link to comment
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
×
×
  • Create New...