All Activity

This stream auto-updates     

  1. Yesterday
  2. Any updates on this work? Looking at the py3 branch on Bitbucket there haven't been any commits for 3 months and I was hoping we might hear more at SIGGRAPH, but I didn't see anything. Currently the ftrack-api is the major blocker preventing us from completing adoption of Python 3 so I'd love to get some hints about when we might expect a stable release that supports it. Thanks,
  3. Last week
  4. Hello, Any chance I can get rid of this icon(in red circle)? As we don't want to provide any alternative ways to publish files other than our own inhouse publish tools. Thanks. John
  5. Hi John, Thanks for updating. Regards, Johan
  6. Update: The report is being generated perfectly after changing the font to a proper font rather than leaving it as default.
  7. Earlier
  8. Yes I have. Glad to hear that. It really matters and makes sense because it allows us to map arbitrary data into a ftrack in what ever way we like and get the summary/average. Cheers.
  9. John

    Component path shows up red

    It works now. I think part of the reason this thread becomes so lengthy is I didn't realize I need to have an event handler running by myself to supersede connect, so I kept asking how ftrack python api gets called. Thanks Steve and of cause Lorenzo!
  10. Hi John, Ok, so you have created new objects with certain custom attributes that you would like to use? The spreadsheet functions are available on task attributes. A change of this behaviour has been considered. I will talk to the team about it. Regards, Johan
  11. Sans Connect, are you calling session.event_hub.wait() anywhere? (either after you make the session, or inside the register function of the resolver, but I don't recommend the latter.) That's required to actually poll the event queue and respond. I assume "Custom resolver.py NOT picked up" means that the path is still red. You can check whether the plugin has been loaded by searching sys.modules for your filename, but do note that the namespace will be a UUID.
  12. We’re pleased to announce that ftrack is heading to IBC this 13-17 September – and we’d love to meet you there! IBC remains one of Europe’s most exciting broadcast events, and we can’t wait to show off all that’s new in ftrack. We’ll be on hand to discuss (and show!) the latest improvements to our Adobe Creative Cloud integrations, what’s new in ftrack Studio 4.2, our recent developments in ftrack Review, and our integrations with Unreal Engine and Unity for real-time animation. We’ll be available for meetings at IBC 2019 from 13-17 August. We’d love to meet up to discuss all that’s new in ftrack Studio and ftrack Review and how the platform can help your next project over the finish line. You can find us on the AWS booth in hall 5, stand C80 at the following times: Friday, 13 September: 10.30am – 6.00pm Saturday, 14 September: 9.30am – 6.00pm Sunday, 15 September: 9.30am – 6.00pm Monday, 16 September: 9.30am – 6.00pm Tuesday, 17 September: 9.30am – 4.00pm If you’d like to schedule a meeting with the ftrack team at IBC 2019, please use the calendar available via the link below. Learn more about ftrack @ IBC 2019
  13. John

    Component path shows up red

    If I register and publish events using python api I can get the correct results. I didn't get any problem with that. And about FTRACK_EVENT_PLUGIN_PATH, here's what I tested: With Connect, Without FTRACK_EVENT_PLUGIN_PATH: Component Path correctly resolved. Custom resolver.py not picked up.(which is correct) With Connect, With FTRACK_EVENT_PLUGIN_PATH: Component Path correctly resolved. Custom resolver.py correctly picked up. No Connect, Without FTRACK_EVENT_PLUGIN_PATH: Component Path RED. Custom resolver.py NOT picked up. No Connect, With FTRACK_EVENT_PLUGIN_PATH: Component Path RED. Custom resolver.py NOT picked up. So the question remains: how to get the component path resolved correctly without connect? (And again it's kind of fine if it not feasible) I hope by this way I have what I'm trying to express expressed clearly.
  14. We’re pleased to announce that ftrack is heading to devcom 2019 this 18-19 August at Germany, Cologne’s Koelnmesse devcom is an annual conference dedicated to the developers that create video games both large and small. While devcom’s partner event, gamescom, is very much focused on the games themselves, devcom is all about the people who make them. We’re extremely excited to attend this year’s conference and to learn from such an interesting group of developers. We’re also excited to show off our new Unreal Engine, Unity and Perforce HelixCore integrations. Each integration has been designed from the ground up to make real-time animation and game development simpler, easier and more effective. We’ll be available for meetings at devcom 2019 from 18-19 August. We’d love to show you how our Unity, Unreal and Perforce integrations can improve your daily game dev workflow. To schedule a meeting with the ftrack team, please use the calendar available via the link below. Learn more about ftrack @ devcom 2019
  15. Sadly all the entities are custom object.. Just asking does it has to be on task? Appears to be a big limitation to what we are planning to do..
  16. Hi John, The path you'd like resolved, where is that file stored? resolve.py (really, a connected API session subscribed to the ftrack.location.request-resolve topic) could be running anywhere. The reason we let Connect handle it by default, and presumably why Lorenzo assumes you're running it on each artists' workstation is that it's possible that the mounts or file paths are different on each workstation. If you're saving to a common location and can assume the path for each person, you could just have one central API session listening to the event and serving up the response. Does that clear up anything? You said you had a tool running, but that it was still failing to resolve in the web UI? Did you confirm you were receiving events? And responding appropriately?
  17. Hi Tom, What do you mean by "old components"? Are you replacing files on an AssetVersion (and want to make sure you don't have orphaned files on the ftrack.server Location)? Do you want to find Components for which a more-recent AssetVersion has a Component with the same name?
  18. Hi John, The spreadsheet Functions are available on tasks. Could you please verify that you can see the menu there? Regards, Johan
  19. Hello, Any reason the function menu in column header of Frame end is gray? (Bid hours works perfectly though) I tried attributes with type of Number and default value but it doesn't work either. Cheers. John
  20. John

    Component path shows up red

    Hi, @Lorenzo, Yes I read that before. Unfortunately it doesn't answer my question. Here are what I got so far: The correctness of path resolution relies on resolve.py: Clear ✔️. A customized resolve.py can be picked up by ftrack python api if I set FTRACK_EVENT_PLUGIN_PATH: Clear ✔️. But here's the confusing bit: The environment is needed here is because we want ftrack-web to resolve the path correctly. I can write a tool using ftrack python api and I'm sure the environment variable will work like you said, but the path shown on the web is still RED. So the real question is, is it possible to let a costumized resolve.py picked by ftrack-web like ftrack-connect does ❓ Anyway it's kind of fine if it's impossible.
  21. Hi Rick, I will contact you regarding this, through our support channel. Regards, Johan
  22. 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.
  23. Hi, I would change the Asset query from .one() to .first() if you leave .one() it will complain that the Asset doesn't exist (ftrack_api.exception.NoResultFoundError), setting it to .first() will return None which will properly trigger your if not asset: code block. There should only be one Asset with the same name under the same parent so .first() should work just fine. If you still need to set the version numbers yourself (at times we do that to make sure that the version has the same number that the component published) and you want to avoid duplicate errors, much like what you did with the Asset, you can query the AssetVersion with the specific version number under the same asset and see if it returns a value. If it does you could either notify the user that a previous version exist, and perhaps as if overwriting is desired (this can be dangerous but useful at times). As a side note, on the code you provided you are setting the value of asset_version the first time to a query that returns the first entry it finds under the asset, than overriding it with a new AssetVersion entity you create.
  24. OK i got this figured out, and yes it was dumb lol. Expressing my thoughts in a written form really helped me debug this one. This is my final code for these tests just in case anyone else runs into this. I just had to add a simple query (which i was already doing in my code but for some reason couldn't get it working until now) for checking to see if the Asset already existed. Once you have the asset Ftrack handles the version numbers. Which is exactly what you're saying, but something about the mutiple components flying around got me confused. Thanks for your patience all! session = ftrack_api.Session(server_url=server_url, api_key=api_key, api_user=api_user, auto_connect_event_hub=True) server_location = session.query('Location where name is "ftrack.server"').first() path = r'D:\VFX\FRIDAY_ROOT\testco\render\cgl_unittest\shots\020\0100\plate\tmiko\000.001\high\Capture.PNG' preview_path = r'D:\VFX\FRIDAY_ROOT\testco\render\cgl_unittest\shots\020\0200\plate\tmiko\000.001\high\.preview\Capture.jpg' thumb_path = r'D:\VFX\FRIDAY_ROOT\testco\render\cgl_unittest\shots\020\0200\plate\tmiko\000.001\high\.thumb\Capture.jpg' task = session.get('Task', 'dfa65df9-d955-4d4e-9658-e2bf8c11a10c') asset_parent = task['parent'] asset = session.query('Asset where name is "{0}" and parent.id is "{1}"'.format(task['name'], asset_parent['id'])).one() asset_type = session.query('AssetType where name is "Geometry"').one() if not asset: asset = session.create('Asset', { 'name': task['name'], 'type': asset_type, 'parent': asset_parent }) session.commit() asset_version = session.query('AssetVersion where asset_id is %s' % asset['id']).first() asset_version = session.create('AssetVersion', { 'asset': asset, 'task': task }) print asset_version['id'], 'asset_version_id' session.commit() asset_version.create_component(path=preview_path, data={ 'name': 'ftrackreview-image', }, location=server_location ) asset_version.create_component(path=thumb_path, data={ 'name': 'thumbnail' }, location=server_location ) session.commit()
  25. I feel kind of dumb on this one, i've spent days on this, figured out hacks to work around the duplicate entry problem, and now i'm back to it trying to figure it out properly. I'm assuming there's just a fundamental thing i'm not seeing because i have a different paradigm in my head for what's going on under the hood. But i'm not sure what it is.
  26. That link is what i've based all my code off of. I"ve restructured my code for the purposes of this conversation to look as identical to the docs as possible. I have the same result. I can run this code once, but get "duplicate entry" errors after that. My question is - what is ftrack expecting as a trigger that i'm uploading a new 'version' and therefore starts incrementing on the version numbers. I would assume based off this conversation that i don't change anything on the create('assetversion') code. task = session.get('Task', 'dfa65df9-d955-4d4e-9658-e2bf8c11a10c') asset_parent = task['parent'] asset_type = session.query('AssetType where name is "Geometry"').one() asset = session.create('Asset', { 'name': task['name'], 'type': asset_type, 'parent': asset_parent }) asset_version = session.create('AssetVersion', { 'asset': asset, 'task': task }) session.commit() asset_version.create_component(path=preview_path, data={ 'name': 'ftrackreview-image', }, location='auto' ) asset_version.create_component(path=thumb_path, data={ 'name': 'thumbnail' }, location='auto' ) session.commit()
  27. If you want to do it the ftrack way, I'd suggest let ftrack do the versioning . to get more information on how to properly publish version please have a look in our api docs: http://ftrack-python-api.rtd.ftrack.com/en/stable/example/publishing.html Hope it helps. L.
  28. When i attempt to create a second AssetVersion and connect it to an Existing Asset i get a "duplicate entry" error: self.version_data = self.ftrack.create('AssetVersion', { 'asset': self.task_asset, 'task': self.task_asset['parent'], }) This is the way i'm currently doing it. Adding "version" to this doesn't change me getting the error. This works fine the first time i run it and create the initial "assetVersion" but after that it gives me an error, so i've been getting around it in other ways (creating an Asset for each AssetVersion) but i'd love to do it the proper "ftrack" way, as i'm running into some hurdles with this methodology.
  1. Load more activity