Search the Community

Showing results for tags 'actions'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Company news
    • General announcements
  • ftrack Studio (main app)
    • General discussion
    • Feature requests
    • API
    • Help
    • Actions and Widgets
    • ftrack Go
  • ftrack Review
    • General discussion
    • Feature requests
    • Help
  • Connect and plugins
    • General discussion
    • Connect package releases
    • Feature requests
    • Help
    • Connect plugins releases
  • Advisory Forum
  • Tech preview
    • API
    • New integrations
    • Studio overview
    • ftrack Review


There are no results to display.

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start





Website URL







Found 13 results

  1. Hello all, My goal is to launch programs such as windows shell, Maya & Nuke, etc, from the ftrack UI and also feed custom environment variables to the shell before the application is launched. For example, I know project A requires Nuke 8.0 and Ocula 1.0 and project B requires Nuke 9.0 & Ocula 2.0 . I'm hoping to make/update a UI in ftrack which would have a Nuke icon and if the user double clicks the Nuke icon, the correct version of Nuke and plug-in are found via the environment variables. I can do this with other web based production tracking software and via a command line/Gui based system I maintained at a previous job site. This is the first time I've used ftrack so apologies if this is an obvious topic. Thanks for any tips. Adam Chrystie Pipeline Software Engineer
  2. I've developed a widget that is launched from an action and the widget shows a form that collects some data. For example, this widget collects an entity ID selection from a drop-down menu: The Submit button creates an `ftrack.Event` object with the topic of 'ftrack.action.launch' and the appropriate data to launch another action, publishes this event, and closes the widget window. On my event listener I can see that the action is being launched and that it is generating the correct data to show a form, but the form never shows up in my browser. My hunch is that when I jump from an action to a widget and back to an action again, I'm losing target information about where my browser window is, so the last form doesn't show up. Do you have any idea how I can collect the appropriate information in the widget so that the action launch event that is generated is properly routed? --- Taking a step back, my specific use-case is that we have developed a number of actions in-house that collect data via forms, but they are missing some UI components that I was hoping to make up for via widgets. For example, an action that needs to collect file browser data would collect the file location via a widget first and then proceed to the rest of the action. (At the moment, users are copy/pasting the file path into a text box for this action.)
  3. I am about to shift some specific actions from running locally on user-workstations to one or two central worker-clients. Some of these actions will run a little bit longer and won't be discoverable during processing. To keep it simple, maintainable and scalable I'd like to avoid setting up threading/multiprocessing mechanisms inside the action and do that on a higher level instead. Is there a canonical way to pull this off? If I understand it correctly the event.stop() method will only work if I register the listeners from one single process. So multiple-docker containers or multiple hosts won't work because this would lead to multiple actions with the same name showing up for users. Is that correct? Anything else to watch out for?
  4. I am working from the 'Example Action' found here. My end goal is to create directory structures based on Ftrack hiearchy. At the moment, all I am doing is printing some information (object type and name) based on what is selected. Everything works... but when I change the name of the selected task, or its type through Ftrack, and when I run the action again, it returns the information from my selection prior to the changes made. How can I force update the events inside of the launch() function so that it always operates on the latest ftrack information? Here is a very basic version of my code: import logging import ftrack_api import os #os.environ['FTRACK_SERVER'] = ############ #os.environ['FTRACK_API_USER'] = os.environ.get("USERNAME") #os.environ['FTRACK_API_KEY'] = ############ class MyCustomAction(object): '''Custom action.''' label = 'Create Folders' identifier = 'create.initial.folders' description = 'This creates the initial task folders' def __init__(self, session): '''Initialise action.''' super(MyCustomAction, self).__init__() self.session = session self.logger = logging.getLogger( __name__ + '.' + self.__class__.__name__ ) def register(self): '''Register action.''' self.session.event_hub.subscribe( ' and source.user.username={0}'.format( os.environ.get("USERNAME")#self.session.api_user ), ) self.session.event_hub.subscribe( 'topic=ftrack.action.launch and data.actionIdentifier={0} and ' 'source.user.username={1}'.format( self.identifier, os.environ.get("USERNAME")#self.session.api_user ), self.launch ) def discover(self, event): '''Return action config if triggered on a single asset version.''' data = event['data'] # If selection contains more than one item return early since # this action can only handle a single version. selection = data.get('selection', [])'Got selection: {0}'.format(selection)) #if len(selection) != 1 or selection[0]['entityType'] != 'assetversion': # return return { 'items': [{ 'label': self.label, 'description': self.description, 'actionIdentifier': self.identifier }] } def launch(self, event): ########## How can I update this ^^ event so that launch() doesnt operate on an outdated information ########## ########## ########## '''Callback method for custom action.''' selection = event['data'].get('selection', []) #print selection for entity in selection: item = self.session.get('Task', entity['entityId']) object_type = item['object_type']['name'] name = item['name'] print name, object_type return { 'success': True, 'message': 'Ran my custom action successfully!' } def register(session, **kw): '''Register plugin.''' # Validate that session is an instance of ftrack_api.Session. If not, # assume that register is being called from an incompatible API # and return without doing anything. if not isinstance(session, ftrack_api.Session): # Exit to avoid registering this plugin again. return action = MyCustomAction(session) action.register() if __name__ == '__main__': logging.basicConfig(level=logging.INFO) session = ftrack_api.Session() register(session) # Wait for events. session.event_hub.wait() Thanks! Ali
  5. When trying to run an action on the "Lists" there is no connection to ftrack connect On the library level, on the library folder level and the list level.
  6. Is there a way to make the boolean’s width larger? Right now the checkbox appears on top of my label
  7. Hi We would like to be able to provide the users of the review page, the ability to run some of our actions. It would seem there is no place currently for running actions on either the right hand panel or on multiple selected versions on the bottom panel. Could I request some ability to add user actions here? Thanks Phil
  8. I'd like to have a push button and checkboxes in my webUI that is launched from my Action. The pushbutton is for "help", and the checkboxes are to show what is configured for my shots that are created by the action. I'd like the artists to be able to change the configuration as needed. I see these are available when I use the webUI, but I don't see them listed in the documentation. So how can I get them?
  9. Maybe these will help someone. 2 Actions we use regularly. When ran on an entity (single or multiple selection), they push it's thumbnail to it's direct parent or all it's children, depending on which one you run Works asynchronously as a job so even running it on big numbers of items shouldn't be a problem. Action - thumb to children Action - thumb to parent
  10. Hi. my default FTRACK CONNECT Actions (nuke, maya) are not showing up, as well as my custom python actions are not being compiled, after i properly login with server url, password, and api key. This only happens on a few computers, while works fine on others. What should i look into in order to fix this issue? thanks I am using ftrack and my Diagnostics are all okay and working as normal.
  11. Hi all: Been working on ftrack 3ds max integration for our studio for the past few months, so finally getting into actions/events/etc. Just to get this place started, here's an Action I made that I have no idea how everyone else on ftrack works without; the ability to download all Components at once from an AssetVersion. Ideally, I'd like to be able to integrate a Tkinter/Qt UI for choosing the file directory to save files to, but right now that doesn't seem to work, and I can't figure out why (since nothing gets piped to stderr/stdout when I execute a simple Tkinter fileDialog.askDirectory()) Actually, ideally I'd love to be able to zip the components on the server and generate a download link to that, but I can't figure out how to get boto (S3) to do that. So for now I just multithread the downloads. You will need to modify this action to suit your needs (Since you obviously won't have a frostburnS3Accessor class, which really is just a subclass of ftrack.S3Accessor with a few additional methods such as getting the resolved URL of a key on S3. Just replace all of that with whatever type of Accessor that your studio is using) Hope this helps get the ball rolling in here!
  12. I've posted a quick example on how to get started with Actions + a simple UI to go with it. /F
  13. laura

    pdplayer as action

    Hi. I need your support in creating an action for opening a sequence with Pdplayer from the web interface. I already wrote an action, but the problem is, that it is opening Pdplayer on the machine where the action is running (server) and not on the machine where the action is called. Any suggestion? Thanks, Laura