All Activity

This stream auto-updates     

  1. Today
  2. Last week
  3. Environment: MacOS 10.15.4 Python 3.8.1 ftrack-python-api 2.0.0
  4. Hi, When I was trying to connect to event hub (ftrack studio on cloud), I got an exception(paths and domain name have been masked): Traceback (most recent call last): File "-*-/threading.py", line 932, in _bootstrap_inner self.run() File "-*-8/threading.py", line 870, in run self._target(*self._args, **self._kwargs) File "-*-/ftrack_api/event/hub.py", line 191, in connect raise ftrack_api.exception.EventHubConnectionError( ftrack_api.exception.EventHubConnectionError: Failed to connect to event server at b'https://-*-.ftrackapp.cn' with error: "b'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)'". But if start session without "auto_connect_event_hub=True" the session can be created. Any clue? Cheers, John
  5. Hello im passing in a spreadsheet into python trying to create many asset builds and folder etc. from this and i keep getting the below error which i believe is because i have multiple objects in the same hierarchy so its trying to create the upper objects int he hierarchy twice, what is the best way you guys have found to catch this or query if that item exists before creating my code it similar to below below ERROR ftrack_api.exception.ServerError: Server reported error: IntegrityError((_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '780a712a-9bc3-11ea-b9ae-d61ccb4e321b-Assets' for key 'context_parent_id_key'") [SQL: u'INSERT INTO context (context_type, name, parent_id, id) VALUES (%s, %s, %s, %s)'] [parameters: (('task', 'Assets', u'780a712a-9bc3-11ea-b9ae-d61ccb4e321b', u'2fec278a-12d1-44fa-8e26-adc3b218a6bf'), ('task', 'Assets', u'780a712a-9bc3-11ea-b9ae-d61ccb4e321b', u'72fd181f-f72d-4f87-9cd8-74e579cfa588'), ('task', 'Assets', u'780a712a-9bc3-11ea-b9ae-d61ccb4e321b', u'9261c102-080b-45c6-9a07-d3e4eeca3fc1'))] (Background on this error at: http://sqlalche.me/e/gkpj)) [Finished in 21.9s] CODE: task = FTrack_session.create(object_type,{'name':object_name,'parent':FTrack_object_parent})
  6. I have not tried the first solution. The second one does not work. I found a solution to this. session.reset() Using session.reset() to replace session.cache.clear() seems working fine for me now. Thanks for the help, Lorenzo.
  7. Hi @chengshun neither does adding the notes in the projection ? entity_ins = self.session.query('select notes from AssetVersion where id is %s' % sel_id).first()
  8. Thanks, Lorenzo I'm sorry but It doesn't work. I tried the session.populate(project, 'notes'), but the result is same as not using the code, just like before when I didn't add cache.clear(). Newly created notes were removed. Seems like the session data is not updated. The code I've changed is like below:
  9. Is there a way to query or export a list of permissions for each role? I'm trying to create a spreadsheet that shows by role, what the permissions are. I am currently having to take multiple screenshots (because of the modal window) and then would have to type these in all by hand. Or is it possible to get a list of all of the permissions so that I can more easily create/fill in this spreadsheet manually?
  10. Is there still a plan to implement this? Would it possible to at the very least add users with Ftrack accounts by searching for them to take part of the manual process out of it? Cloning is helpful in some situations but doesn't solve the issue for large scale projects.
  11. @chengshun we have been further looking into the reported issue. One thing you can try is to replace the session.cache.clear() call with session.populate(project, 'notes') Please let us know if does solve your problem. Cheers. L.
  12. Hi @chengshun resetting the cache half way through the action is risky at least. Something you can try is to rework the query you are doing as such: entity_ins = self.session.query('select notes from AssetVersion where id is %s' % sel_id).first() here you can find one of our examples which shows you how to use the use of ftrack-action-handler and how to attach the result document to the job itself ,so you don't have to save it , hope it helps. if you are still having issues please let us know. L.
  13. Hello, sorry to re-up this topic, but have you any ETA on this feature ? Will we be able to manage in settings the number of decimal digits ? As we do for version number padding :) we can manage some assets attributes with almost 4 or 5 digits behind the coma (displacement values on very precise materials) For the moment we are using text attribute as work-around, but it would be safer (avoid typing mistakes) to use numerical one. Thank you very much :)
  14. Earlier
  15. Hi @intelyuxiang, would you mind trying against the latest master on https://bitbucket.org/ftrack/ftrack-connect-unity-engine/src/master/ cone the repository with: git clone https://bitbucket.org/ftrack/ftrack-connect-unity-engine.git then from within the cloned folder run : python setup.py build_plugin this will create an up to date version of the integration. Please also ensure you Unity Hub has been stopped before re running the integration. Let us know how it goes. L. Ps. Also can you report back what Unity version are you using ? thanks.
  16. Package from git URL 。unity 1.0.0 -rc2 Error: FtrackException: The ftrack client could not connect successfully. UnityEditor.Ftrack.ConnectUnityEngine.Client.EnsureClientProcess () (at Library/PackageCache/ftrack-connect-unity-plugin@5d73de1e73/Editor/Init.cs:143) UnityEditor.Ftrack.ConnectUnityEngine.Client.EnsureClientProcess () (at Library/PackageCache/ftrack-connect-unity-plugin@5d73de1e73/Editor/Init.cs:139) UnityEditor.Ftrack.ConnectUnityEngine.Client.EnsureClientProcess () (at Library/PackageCache/ftrack-connect-unity-plugin@5d73de1e73/Editor/Init.cs:139) UnityEditor.Ftrack.ConnectUnityEngine.Init.InitFtrack () (at Library/PackageCache/ftrack-connect-unity-plugin@5d73de1e73/Editor/Init.cs:189) UnityEditor.EditorApplication.Internal_CallDelayFunctions () (at <bd2913165a514bbe8b0dffcb5ea8ff39>:0)
  17. Hi, I was working on a event action script. It is used to collect all notes under one assetVersion and convert them to a doc which will be added to a new note. It works fine at first. But I found that it can not collect new notes which are created after the starting time of the event script. So I think the problem may be the session cache. Then I add a code to clear the session: session.cache.clear() at lunch function. But error shows up: ERROR:ftrack_api.event.hub.EventHub:Error calling subscriber <Subscriber metadata={'id': '723b56730bde4abe81f3c732303f2e9f'} subscription="topic=ftrack.action.launch and data.actionIdentifier=sy.notes-to-docx"> for event <Event {'topic': u'ftrack.action.launch', 'source': {u'id': u'6347029859d2401bb850f5fada92295c', u'user': {u'username': u'chengshun', u'id': u'bcdf57b0-acc6-11e1-a554-f23c91df1211'}}, 'target': u'', 'data': {u'actionIdentifier': u'sy.notes-to-docx', u'selection': [{u'entityId': u'ac013aa4-9065-11ea-bda8-0a58ac1e069e', u'entityType': u'assetversion'}], u'label': u'Notes To Docx'}, 'in_reply_to_event': None, 'id': u'32a6a71deed7415f9e9f9b35277c30ac', 'sent': None}>. Traceback (most recent call last): File "c:\Python27\lib\site-packages\ftrack_api\event\hub.py", line 724, in _handle response = subscriber.callback(event) File "D:\git\shenyin_pipeline\ftrack\export_notes_to_doc.py", line 98, in launch location=server_location File "c:\Python27\lib\site-packages\ftrack_api\session.py", line 1956, in create_component 'FileComponent', path, data, location File "c:\Python27\lib\site-packages\ftrack_api\session.py", line 2025, in _create_component origin_location.add_component(component, path, recursive=False) File "c:\Python27\lib\site-packages\ftrack_api\entity\location.py", line 78, in add_component [component], sources=source, recursive=recursive File "c:\Python27\lib\site-packages\ftrack_api\entity\location.py", line 139, in add_components details=dict(location=self) LocationError: No structure defined for location <Location(ce9b348f-8809-11e3-821c-20c9d081909b)>. And the error comes from the code session.create_component() I use cache.clear() at another event action script to create folders at the studio network storage and it works fine. Seems like only create function will go wrong after cache.clear(). I put the full script below. Need some help, thanks.
  18. Hi Janis, Which browser/os/and part of ftrack are you seeing the issue with? I tried a quick test in Chrome on macOS and Windows 10 in the task spreadsheet and while editing a note and I didn't notice anything surprising.
  19. Hi Ozen, If you mean grouping by types, this might help: http://help.ftrack.com/en/articles/1040496-grouping-data-in-spreadsheets Unfortunately I don't believe you can limit a view to a particular type however.
  20. Hey Peter, nice work! I've been thinking about something like this myself--I love tab-completable everything and am excited to give this a try.
  21. Ah ok, so it's not actually storing as a list. Great, thank you!!!
  22. +1 for this request. Integrations like this are essential to project management nowadays.
  23. Hello, I am trying to create a view where I can see all the milestones and tasks for a specific department. Example: all Tasks and Milestones for Compositing. When I go to filters I can only filter by Milestone Type OR Task Type, there are no options for Department. If I add both, they negate one another. When I go into the advanced filter options it only allows me to use Task for the "Any condition". In the past Milestones were the same as tasks with no duration which made this easier. Any help would be greatly appreciated! Thank you! Ozen
  24. My team has been experiencing some frustration with the keyboard short cuts while giving notes that overlap with general operating system shortcuts. For example: I like using ctrl+shit+arrows to highlight whole words for deleting/editing but that's also the shortcut for moving to the next item. Then I lose the whole paragraph I was just writing. It's a small thing, but when you've got a team crunching, small things can lead to big frustration.
  25. Hi there, To exports text notes this link is sufficient, but any chance with attachments? A report like Client Review report would be perfect. Cheers, John
  26. Very cool! Thank you for sharing this! Regards, Lucas
  27. Mikhail Pasechnik

    Golang api

    Hi, I created ftrack-golang-api https://github.com/conducte/ftrack-golang-api ! Inspired by ftrack-javascript-api Is anyone interested in it? Currently EventHub is not implemeted and Entity's represented throught golang map (dictionary) what is a little bit verbose. Basic usage of the api: package main import ( "flag" "github.com/conducte/ftrack-golang-api/ftrack" "log" ) func main() { apiKey := flag.String("api_key", "", "Ftrack Api Key from Settings -> Api Keys") apiUser := flag.String("api_user", "", "Ftrack Api User username from enabled user") serverUrl := flag.String("server_url", "", "Ftrack Server Url server url eg https://ftrack.com") flag.Parse() // Construct Session from command line arguments session, err := ftrack.NewSession(ftrack.SessionConfig{ ApiKey: *apiKey, ApiUser: *apiUser, ServerUrl: *serverUrl, }) if err != nil { log.Fatal(err) } // Query single Task from server result, err := session.Query("select name, parent.project from Task limit 1") if err != nil { log.Fatal(err) } task := result.Data[0] log.Println("Task: ", task) }
  28. Hi Justin, Since we store the multi-select enumerator value as a ", "-delimited string, you'd need to search the four possibilities: Your value is the only value, it's the first value, last value or a middle value. That snippet would look like: custom_attributes any (key is "userDynEnum_Coordinator" and (value is "greyc" or value like "greyc, %" or value like "%, greyc" or value like "%, greyc, %")) Since that's tedious and error-prone, I wrote this: import itertools def subquery_builder(*args): perms = itertools.permutations(args) for perm in perms: spacers = itertools.product((None, '%'), repeat=len(args) + 1) for spacer in spacers: if all(elem is None for elem in spacer): op = 'is' else: op = 'like' condition = ', '.join( e for sublist in itertools.izip_longest(spacer, perm) for e in sublist if e is not None) yield '{} "{}"'.format(op, condition) def query_builder(attr, *args): subq = subquery_builder(*args) return '({})'.format( ' or '.join( '{} {}'.format( attr, item ) for item in subq ) ) def custom_attr_multi_search(key, *args): return 'custom_attributes any (key is "{}" and {})'.format( key, query_builder('value', *args) ) I don't recommend using it with more than a few args.
  1. Load more activity