Jump to content

Milan Kolar

Members
  • Posts

    81
  • Joined

  • Last visited

  • Days Won

    14

Everything posted by Milan Kolar

  1. Will do. Yeah we're carefull. pulling a particular commit to make sure it stays ok for us.
  2. Hi. We'll try updating to this latest branch. We've been using the previous one for python 3 for almost a year with only one problem, that we're running into now. It's compatible with either python3 or python 2, but doesn't work in mixed environment. So if we install it with pip3 and then try loading it to maya, it crashes on multilpe wrong imports. We'll investigate more closely and post here.
  3. @pritchardhobe you should get an invite
  4. Very interesting idea. Even though we've never really longed for something like it, I'm sure we'd start using it right away and it would be clearer for the client. Right now we're also sending multiple review sessions if they concern different things (for example one session for fx approvals and one for animation). With this feature we could be sending dailies (which we'd love) that would be organised inside for clarity. My approach would be more of a 'playlist' style, where we could set multiple playlist withing the review that could contain the same version if need be. Client could then choose a playlist inside the review, or show all versions. If 'show all' could be disabled, then it would work exactly as Alberto's request, but having the extra option for other cases. Just writing this down I can think of plethora options to use it. Mockup different cut versions with scrambled shots or different shot versions (that would of course need the sequence play in client review ) and so on.. Long story short: I love the idea
  5. @FranZ Hey. I've sent the invite now. You can either send me a private message here with the emails or I can make you an admin if you wanna invite people yourself. Either works.
  6. To add to list these are some thing more in a bug than a feature category. Adding time logs by just typing a duration in the main field and pressing save, should use current time as end time, rather than start. Editing time logs should allow changing the stop time as well as start time, currently the only way to change timelog is changing duration. Something to deal with the occasional super long day (as instinct-vfx mentioned) would be great. Maybe a notification that pops up every hour after certain time that prompts user to confirm he's still working, if he doesn't it turns off the logger, because he's most likely gone home. Ideally though this could all be integrated with connect. Auto start timers on launching app for task, and stopping when artist closes it.
  7. I've set it up so that anyone with @ftrack.com email address can log in without an invite, in case developers want to peek in here and there.
  8. Soo. I went ahead and created an Ftrack Slack User Group. However there's this small problem I haven't realized till now. Slack is not very good with public access, so every person needs to get an invite (or be within a specific domain, which is even worse). There is this lovely service called slackin, but that of course needs to run on something. Right now I'm ok with just sending out invites like crazy if anyone asks here to get it going. Theoretically as it grows this won't be an issue, because any member can send an invite. It'll just be a bit of a hassle at the beginning. Maybe ftrack guys would be interested in hosting this tiny slackin service, to make it easier? Anyways the address is: ftrackusers.slack.com Come join the party... (it's very, very lonely right now )
  9. Another useful hook with this. Start timer automatically with app launch. Now we need to figure out how to stop it automatically and there will be some happy producers walking around here. import logging import ftrack import ftrack_api logger = logging.getLogger() def start_time_on_launch(event): '''Modify the application environment and start timer for the task.''' data = event['data'] username = event['source']['user']['username'] session = ftrack_api.Session() # Get user from username user = session.query('User where username is "{}"'.format(username)).one() # Try getting taskid from event selection try: taskid = data['context']['selection'][0]['entityId'] except: logger.info('Unable to determine task. Timer not starting') if taskid: task = session.query('Task where id is {}'.format(taskid)).one() logger.info('Starting timer for task: ' + task['name']) user.start_timer(task, force=True) def register(registry, **kw): '''Register location plugin.''' # Validate that registry is the correct ftrack.Registry. If not, # assume that register is being called with another purpose or from a # new or incompatible API and return without doing anything. if registry is not ftrack.EVENT_HANDLERS: # Exit to avoid registering this plugin again. return ftrack.EVENT_HUB.subscribe( 'topic=ftrack.connect.application.launch', start_time_on_launch )
  10. So I had some time to play with this a little bit and came up with compact and quite efficient way of dealing with environments using launching events. Technically all that is needed is one hook that listens to the launching events and appends environments from simple .json config files based on app identifiers. The hook looks for .json files in 'FTRACK_APP_ENVIRONMENTS' and tries to find 2 configs. One that is version independent i.e. 'maya.json' and one that is version dependent i.e. 'maya_2016.json', then it adds both into the environment. Config file names mus match the app identifier or the first part of the identifier when split by '_'. You can then have a hierarchical environment config files, where maya.json loads regardless of maya version you launch, and maya_2016.json gets added on top of the environment when you launch Maya 2016 from ftrack. 'FTRACK_APP_ENVIRONMENTS' folder can then look like this for instance: maya.json maya_2015.json maya_2016.json maya_2016.5.json nuke.json nuke_9.0v8.json houdini.json houdini_15.json etc.... This is the core part of the hook (full hook attached): def modify_application_launch(event): '''Modify the application environment and start timer for the task.''' data = event['data'] context = data['context'] app = data['application'] environment = data['options']['env'] env_path = os.environ.get('FTRACK_APP_ENVIRONMENTS') env_files = [] # determine config file for version independent environment app_name = app['identifier'].split('_')[0] app_file_name = '{}.json'.format(app_name) env_files.append(os.path.join(env_path, app_file_name)) # determine config file for version dependent environment variant_file_name = '{}.json'.format(app['identifier']) env_files.append(os.path.join(env_path, variant_file_name)) env_add = [] # loop through config files for env_file in env_files: try: env_add = load_env(env_file) except: env_add = None # Add each path in config file to the environment if env_add: for variable in env_add: for path in env_add[variable]: ftrack_connect.application.appendPath( str(path), str(variable), environment ) This is what the config file look like then: { "MAYA_PLUG_IN_PATH": [ "K:\\.core\\dev\\maya\\plug-ins" ], "MAYA_AUTOSAVE_FOLDER": [ "C:\\mayatemp\\autosave" ], "MAYA_SCRIPT_PATH": [ "K:\\.core\\dev\\maya\\scripts", "K:\\.core\\dev\\maya\\shelves", "K:\\.core\\repos\\maya\\scripts", "K:\\.core\\repos\\maya\\prefs\\shelves" ] } Now quite frankly, I think that a simple hook like this (probably a bit more robust version) should be a part of the default connect installation. Straight away people would have 3 options of modifying the app launches. Only need to modify environment: Add your json formatted environment file to 'FTRACK_APP_ENVIRONMENTS' and name it 'app_identifier.json' (e.g.: maya_2016.json) Write your own hook that catches launching events and modify the launch that way. Change the launcher hook in connect and modify to your heart's content One way or another, our enviro setups just went from lot's of python file, to a simple json file per app without the need to tinker with default hooks. Thumbs up. modify_app_launch.py
  11. This is getting very close to a simple a straightforward system. I have however ran into some issues. The most prominent right now is the fact that I have no way of finding out what task/entity was the source of this launching event. It's not included in the event data and because it seems that this event precedes the ftrack addition of env variables the environment is missing the 'FTRACK_TASKID' key too. It's important to be able to tell what originated the launch event because the enviro usually changes based on what project or task we're launching (different plugins for example. EDIT: Ah. One of those where you completely skip on part of docs and then realise it's of course all there. If anyone else enjoys skipping important parts of docs, then here's how you get it. event['data']['context']['selection'][0]['entityId'] So considering I found it...Nice work guys.
  12. Sounds great to me for unofficial "holy crap where's this button I certainly saw yesterday" type problems. I'd certainly be on on it happy to chat about ftrack with other users.
  13. Milan Kolar

    Change schema

    Hey guys. One thing I'm dealing with right now and it appears I'm stuck. We have 2 shows using the same schema. However midway through production one of them started changing a bit in terms of requirements from client, director etc. So I need to tweak the schema for this one a bit. Different statuses, plus some other config differences. The question is. Is it possible to change the schema after the project is created? I didn't find a way, just as well as I didn't find a way to duplicate schema. That would be super helpful too considering how annoying it is to keep creating new ones all the time. Thanks EDIT: I forgot to add, that my aim is to separate these two shows, because we don't want the changes made on show2 reflected into show1
  14. Damn. 3 people in the office looking and not one noticed that fella. Thank you
  15. Having messages, notes, newly assigned task... or pretty much anything (preferably customisable) make a small pop up notification on the desktop when they are sent or assigned would be very useful. The problem is that people might forget to check their messages, but if they get a tiny pop up it will at the very least remind them to go a check what's going on. Something like this for instance https://support.google.com/chrome/answer/3220216?hl=en-GB I'm not sure how easy is something like this to implement in other browsers, but Chrome seems to have built in way of doing it. I can imagine this appearing, when artist, get's a personal message (e.g. of certain category) or is assigned an urgent priority task and so on.
×
×
  • Create New...