Popular Content

Showing content with the highest reputation since 09/27/2013 in all areas

  1. 3 points
    Hello, we really like the planning overview in ftrack, but it
  2. 3 points
    This is a huge improvement!!! As mentioned above assets with 36 components used to take upwards to 8-9 seconds and we are now seeing the same asset returning in 0.6 seconds. Really appreciate the effort to get this optimized quickly. Thank you so much, JV
  3. 2 points
    We've been waiting on this for a while now. Do you have an expected date of when this will happen?
  4. 2 points
    I was able to reproduce this issue and we're looking into a fix
  5. 2 points
    Lucas Correia

    Time logging

    Hi Chris, It should be possible to use an event listener to automate starting a timer for a user when a task's status is set in progress. The reason that we don't do this automatically is that there can be several situations where you do not want the timer started automatically, and it is hard to know when this is. An event listener is a small python script that can be used to subscribe to changes in ftrack and perform custom logic such as updating a status, starting a external process or triggering a user interface. Here are some useful resources for setting up an event listener: * Developer hub with introduction to the API * How to subscribe with the API * Information about the update event * Example event listeners If you are not interested in logging time, but rather want to see how long a particular task has been in a certain state you can look at querying `Event` objects using the API. There is a snippet with some examples here. You probably want to query for action=change.status.task and parent_id=the task's id. Regards, Lucas
  6. 2 points
    +1 A dedicated section on introspection in the docs would be useful. Some more explicit examples: # List entity types available to session >>> print sorted(session.types.keys()) [u'Appointment', u'Asset', u'AssetBuild', u'AssetType', u'AssetVersion', u'AssetVersionLink', u'AssetVersionList', u'BacklogGroup', u'Component', u'ComponentLocation', u'ContainerComponent', u'Context', u'Conversation', u'CustomAttributeConfiguration', u'CustomAttributeType', u'CustomAttributeValue', u'Disk', u'EntitySetting', u'Episode', u'Event', u'Feed', u'FileComponent', u'Folder', u'Group', u'Information', u'Job', u'JobComponent', u'List', u'ListCategory', u'Location', u'Membership', u'Message', u'Metadata', u'Milestone', u'Note', u'NoteCategory', u'NoteComponent', u'ObjectType', u'Participant', u'Priority', u'Project', u'ProjectSchema', u'ProjectSchemaOverride', u'Queue', u'Recipient', u'Resource', u'ReviewSession', u'ReviewSessionInvitee', u'ReviewSessionObject', u'ReviewSessionObjectStatus', u'Schema', u'SchemaStatus', u'SchemaType', u'Scope', u'Sequence', u'SequenceComponent', u'Setting', u'Shot', u'State', u'Status', u'Task', u'TaskTypeSchema', u'Taskgroup', u'Timelog', u'Timer', u'Type', u'TypedContext', u'TypedContextLink', u'TypedContextList', u'User', u'WorkflowSchema'] # Retrieve the class that represents a particular type by key. >>> entity_type_cls = session.types.get("Shot") >>> print entity_type_cls <dynamic ftrack class 'Shot'> # Examine attributes available on that entity type. >>> print sorted(entity_type_cls.attributes.keys()) [u'_link', u'allocations', u'appointments', u'assets', u'assignments', u'bid', u'children', u'context_type', u'custom_attributes', u'description', u'end_date', u'id', u'incoming_links', u'link', u'lists', u'metadata', u'name', u'notes', u'object_type', u'object_type_id', u'outgoing_links', u'parent', u'parent_id', u'priority', u'priority_id', u'project', u'project_id', u'scopes', u'sort', u'start_date', u'status', u'status_id', u'thumbnail', u'thumbnail_id', u'timelogs', u'type', u'type_id'] # Examine a specific attribute by key. >>> status_attribute = entity_type_cls.attributes.get("status") >>> print status_attribute <ftrack_api.attribute.ReferenceAttribute(status) object at 73957712> # Check whether that attribute is mutable etc. >>> print status_attribute.mutable True
  7. 2 points
    Hi, I've created an example event listener which can be used to restrict which users should be allowed to set certain statuses. I thought it would be useful for the rest of the community and wanted to share it here. Let me know if you have any questions or feedback. You can find the snippet on bitbucket. Event listener: Restrict task status updates The event listener can be used to limit which users are allowed to set certain statuses. When a status is changed in the ftrack interface, the event listener will check if the status is restricted, and if the user is member of the group with users that are allowed to set to those statuses. If not, the status will be reverted to the old value, and a message will inform the user that the operation was not permitted. Configuration To use the event listener, first set the two variables at the top: RESTRICTED_STATUSES A list of task status names that are restricted, only the members of a group will be allowed to change these. ALLOWED_GROUP_NAME The name of the group in ftrack which contains the users that are allowed to set the restricted statuses. Running the event listener You can run the event listener from the command line:: python restrict_task_status_listener.py You can also register the event listener as a plugin. For more information, see the links below. Read more Find more information in our documentation: * Developing: Events * Event: Action - trigger interface * Event: Update * Managing statuses * Organizing users into groups * Python API: Configuring plugins * Python API: Environment variables
  8. 2 points

    Custom lucidity with Ftrack Connect

    I finally got around to getting this running. Got ftrack-connect-nuke and ftrack-connect-maya running from source now, which should be enough for me for now. Maya was a pain to work out, as it didn't like the PySide version required by ftrack-connect, but the lovely feature of modifying the environment of an application launch really helped here by prepending Maya's PySide version. The code is pretty much python, but a couple of command lines to set some environments, but it should be fairly simple to port to OS if anyone's interested.
  9. 2 points
    Hi, You should be able to use the base class "TypedContext": session.get('TypedContext', id) It will figure out the correct subclass
  10. 2 points

    Time logging

    Being able to change the time log for other people as a supervisor or coordinator would be good.
  11. 2 points
    Mattias Lagergren

    Extend webUI for Actions

    A follow up on this, we just merged the checkbox action field into the mainline and it will come out with the next maintenance release.
  12. 2 points

    Status Assign

    A quick video showing the workflow.
  13. 2 points
  14. 1 point
    Good points Yas, and yeah i'm finding that i am needing to control the version numbers at times, at least now i've got the version up happening on the end of Ftrack. I like your explanation of first() and one() as well, i'm still brute forcing my way thought some things as i get a larger overview. On the asset_version - that's a leftover from a test i was doing, forgot to delete it lol.
  15. 1 point

    BUG - Sorting Version Link

    Hi, Thanks for sending this in. That's not expected behaviour, so I have reported this as a bug. Regards, Johan
  16. 1 point
    Hi Remus, Correct, right now there is now export on that report. But your suggestions have been noted, so let's see if either a choice for report will be added. or maybe the filter solution mentioned initially. /Johan
  17. 1 point
    Is there more to the error? Can you post some more of the log? What are you doing when the error pops up? Can you load the Diagnostics page in Server Settings?
  18. 1 point
    Thanks for sharing, I like the idea. This has been on our radar previously so it's nice to see a demand for it.
  19. 1 point

    Exporting Links

    Asset one works great! Shot one just needed a small change to make it work for a full shot number: For Shot 140/0105 outgoing_links.to.name = '0105' and outgoing_links.to.parent.name = '140'
  20. 1 point

    Simplify team management

    Thank you. This was just a proposal how it could work. It can be done with multiple selection and a function like "add selected to group" as well....or when adding users to the group the list of users (that can be added) can be just contain the users added to the ungrouped team.
  21. 1 point

    Hours in My Tasks

    Hey, Got a request to have hours on the My Tasks page. https://imgur.com/a/fzmDM
  22. 1 point
    I see, thank you for elaborating. The best solution at the moment would probably still be an event listener that warns/revert changes. A custom attribute could be set and read on certain users to allow them to modify their timelogs regardless of that limit. I will update our feature request with details from the use-case you provided.
  23. 1 point

    Adding users on an existing note

    Hi, Not sure if this has already been requested, It would be great to be able to retrospectively add users to a note posted on a Task/Shot (Edit Note) we keep finding that we have to reply to an existing note typing ' Adding more users' as a workaround. Many thanks! George
  24. 1 point
    Hi, We have just released a new version of ftrack-connect 0.6.2 (https://www.ftrack.com/portfolio/connect). This is a major release as all ftrack connect plugins have been updated to no longer use our legacy API and instead use the new API. This change will improve performance across the board, as well as lead to a quicker development cycle. In addition, we are including our new Beta plugins for Maya and Nuke built around the open source project, Pyblish (http://ftrack-connect-documentation.rtd.ftrack.com/en/0.1.12/). Backwards compatibility with the old location plugins and actions are achieved through the ftrack-location-compatibility plugin (https://bitbucket.org/ftrack/ftrack-location-compatibility). While old locations and actions will continue to function, we highly recommend that you start looking at migrating your plugins and locations, please have a look at the migration documentation for more information (http://ftrack-connect.rtd.ftrack.com/en/latest/release/migration.html) For more information on what has changed please refer to each updated package: ftrack connect 1.0.1 ftrack connect cinema 4d 0.1.3 ftrack connect hieroplayer 1.1.5 ftrack connect legacy plugins 1.0.0 ftrack connect maya 1.0.0 ftrack connect nuke 1.0.1 ftrack connect nuke studio 1.0.0 ftrack connect rv 3.6 ftrack python legacy api 3.6.0 We hope you enjoy the release. Please let us know if you have any questions or feedback. cheers Eric
  25. 1 point
    Hi Remus, yes - this should be released in the next version of ftrack - 3.5.4.
  26. 1 point
    I found the answer (for those looking at this in the future): group_name = 'Test Subgroup' user_name = 'fzand' membership = session.query( "Membership where group.name is '{0}' ".format(group_name) + "and user.username is '{0}'".format(user_name) ).first() session.delete(membership) session.commit()
  27. 1 point
    If this is important for you, I think your best option would be to use the layout system: http://ftrack.rtd.ftrack.com/en/stable/administering/managing_layouts.html Note that this is quite advanced but give you a lot of freedom. To make them slightly easier to manage (if you add new custom attributes) you could automate the generation of them.
  28. 1 point
    Remus Avram

    Custom keyboard shortcuts

    Hi Ftrack, is there a way to customize the keyboard shortcuts? It would be handy for different operations which are done often. Cheers, Remus
  29. 1 point
    I've just had a quick look at this and from what I can see it is not possible to restrict it. I will treat this as a bug and make sure we have a bug ticket for it. Thank you for making us aware of this
  30. 1 point
    Hi, Yes, it is the playable component name that you specify on the Asset type that gets picked up and played in the internal review session. Unfortunately it is not possible to specify a list, and we're aware of this being a limitation at the moment. I totally agree! It feels like the asset type's playable component could be re-thought and approved upon to give more flexibility both when creating and running a review session.
  31. 1 point
    Mattias Lagergren

    Location Setup

    For the transfer to work you must have both locations available for transfer. So e.g. if you work at home - location B - you must have location A available to transfer from it. However, you could be representing location A with a different location plugin while at home, e.g. mounted somewhere else or accessed using a FTP.
  32. 1 point

    Old and new API together

    Hey, Thanks for replying. Is there any possibility to grab or add the predecessors and successors with new api, I mean only with the new API? It will be a big help. Thanks
  33. 1 point
    Mattias Lagergren

    Publish to custom Locations

    Hi Mike, I would recommend some debugging here to see where it goes wrong. It sounds like there is no proper resource identifier being generated from the structure plugin. A few prints in the structure plugin or in the surrounding code when using the location should point you in the right direction.
  34. 1 point

    Custom lucidity with Ftrack Connect

    Try opening a terminal (cmd), and drag'n'drop "ftrack-connect.bat" into it and execute. That will ensure the terminal stays open for you to debug.
  35. 1 point
    Great, I'd love to try it out! I've never contributed to a project like this before, so I'm unsure how to go about overcoming the errors I'm getting. I gave it a shot by forking the repo then using Visual Studio to create a solution from the existing code. That all seemed to work and when I pressed Start it ran setup.py. The first time I ran the code, the console was filling up with info and things were being installed all over. After a while I got an error, something related to C not working, but the python installation part was successful. Here is what comes up in Visual Studio when I try to run setup.py now: usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: setup.py --help [cmd1 cmd2 ...] or: setup.py --help-commands or: setup.py cmd --help error: no commands supplied I'm not sure what this means, I haven't edited anything. Any tips on how to get this working? Thanks!
  36. 1 point
    CG Producer

    File Locations - Legacy?

    Hi All, I'm new to the forum and relatively new to ftrack, so please bear with me in case I'm missing the obvious here. We are looking to complete a couple of simple tasks. A] To move the ftrack file storage (assets, compressed video, reference assets) to a local file server / network drive. B] Store our master assets locally and link these to tasks / shots / asset builds in ftrack. I have ftrack connect installed so I can add a storage scenario - but this doesn't seem to do anything! I also noticed that in the ftrack settings 'Connect Location' shows as legacy. Does this mean it is going to be phased out? Or its it going to be replaced by something else? I'm a little confused with how to actually start saving files across different locations, and a lot of the documentation seems to contradict itself. Any help would be appreciated, I'm probably missing something really simple here! Best. M
  37. 1 point
    Hi Mike, I cannot see any immediate problems with your solution. If the _ROOT_DIR is correct and your adding tools/my-logger/source/ to the sys.path it should get picked up :-/ We've merged the logging feature that will log warnings and errors to file from Connect, but we haven't built and released it yet.
  38. 1 point
    Fredrik Limsater

    Links in notes and spreadsheets

    Hello, vote for this feature on our public roadmap: https://trello.com/c/I6gLlP67 Cheers, Fredrik
  39. 1 point
    Mattias Lagergren

    Sequence Review

    I will create two separate feature requests for this: * Being able to view clips without their handles. * Having a play-through option in the client facing review system
  40. 1 point
    "sequence" is the old apis object, and "sequence01" is the new apis object. You can't mix objects between the apis. If you are using the new api for creating you will need "sequence01". As for your example you are better off getting the id of an object in the old api, and then get the new apis object by querying the id (I haven't tested the below code): old_sequence = ftrack.getSequence(["createcondorito", "test"]) new_sequence = session.query('Sequence where id is "%s"' % old_sequence.getId()) session.create("Folder", {"name": "testFolder", "parent": new_sequence}) session.commit() Hope that helps
  41. 1 point
    Björn Rydahl

    Editing Custom Attributes

    Hi, you can update Enumerator attributes with new values as you go. Simply go to System settings -> custom attributes and edit your attribute from there. For your last question, an enumerator attribute needs to have at least one value to function properly, but you can still decide to not have a default value for all your shots. Hope that helps. Cheers
  42. 1 point
    For reference, this is a Python warning and it is recommended that you update your Python version / install appropriate packages if possible. http://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning
  43. 1 point

    Create Folder Action help

    Haven't used the action myself, but I would think you need to modify the data dictionary here; https://bitbucket.org/ftrack/ftrack-example-create-folders-action/src/db62048ee5fd8111cfcb25aa9e91898670a3c12c/source/create_folders_action.py?at=master&fileviewer=file-view-default#create_folders_action.py-89 This is not tested, but should give you an idea: def createFoldersFromEntity(self, entity): '''Generate folder structure from *entity*. Entity is assumed to be either a project, episode, sequence or shot. ''' # Get all shots on the entity. shots = entity.getChildren('Shot', depth=None) # Loop over all shots and generate the data that should be passed to the # templates. for shot in shots: data = { 'project': { 'name': entity.getProject().get('name') }, 'shot': { 'name': shot.get('name') }, 'sequence': { 'name': shot.getParent().get('name') } } # Pass the data to each template and create the folders unless they # already exist. for template in self.templates: try: templatePath = template.format(data) except lucidity.error.FormatError: print('Not enough information provided for this template.') continue # Raise error if path is absolute since it will not be joined # with prefix correctly. if os.path.isabs(templatePath): raise ValueError('Template path should be relative.') fullPath = os.path.join(self.prefix, templatePath) try: os.makedirs(fullPath) except OSError as error: if error.errno != errno.EEXIST: raiseProblem with this is that a parent of a shot could be other entities than a sequence, so to improve this you should probably test to see if the parent is a sequence.
  44. 1 point

    Feature Request: asynchronous API

    You make some good points. I'm using threads for the API calls so that it won't freeze the UI, but I often get errors because of it. So thread safety would also be really good to have. The error I almost always get is: TypeError: 'Symbol' object has no attribute '__getitem__' I'm not exactly sure what this means, but it seems like the dynamic entity is not finished being constructed.
  45. 1 point
    And here is one for python 2.7 also built on centos 6.6 https://s3-eu-west-1.amazonaws.com/ftrack-deployment/files/centos6/PySide-1.2.2-cp27-none-linux_x86_64.whl
  46. 1 point

    set shot status

    Yip that was the problem the project was setup on a different schema. Thanks.
  47. 1 point
    Thank Mattias, works great!
  48. 1 point

    automatic spreadsheet refresh

    Hi! when I'm reviewing shots, I'm using a filter on the spreadsheet to show all tasks whose status is "pending review". Now, when I change the status of a task to something else and click save, the task remains in the spreadsheet. I need to reload the whole browser window to update the list. Would it be possible to automatically refresh that list? I can imagine situations where it might not be useful to make items disappear... so maybe there could be a tiny reload icon next to the save button that would trigger a faster refresh than reloading the browser window? cheers Stefan
  49. 1 point
    Carl Claesson

    Mail Notifications

    This sounds like a good suggestion. Some kind of setting were you can script what should be in the subject. I'll add this as feature request and will let you know when we've decided something.
  50. 1 point
    Might get you on track...