discoveries conditions are moved to register so they don't hold off another actions

This commit is contained in:
Jakub Trllo 2019-02-22 13:49:20 +01:00
parent 30fb968307
commit 7a84c76b3d
7 changed files with 78 additions and 54 deletions

View file

@ -1,6 +1,3 @@
# :coding: utf-8
# :copyright: Copyright (c) 2015 Milan Kolar
import sys
import argparse
import logging
@ -45,9 +42,7 @@ class ComponentOpen(BaseAction):
# Get component filepath
# TODO with locations it will be different???
fpath = entity['component_locations'][0]['resource_identifier']
items = fpath.split(os.sep)
items.pop(-1)
fpath = os.sep.join(items)
fpath = os.path.normpath(os.path.dirname(fpath))
if os.path.isdir(fpath):
if 'win' in sys.platform: # windows
@ -80,8 +75,7 @@ def register(session, **kw):
if not isinstance(session, ftrack_api.session.Session):
return
action_handler = ComponentOpen(session)
action_handler.register()
ComponentOpen(session).register()
def main(arguments=None):

View file

@ -1,11 +1,10 @@
# :coding: utf-8
# :copyright: Copyright (c) 2017 ftrack
import os
import sys
import argparse
import json
import ftrack_api
import arrow
import logging
from pype.ftrack import BaseAction, get_ca_mongoid
"""
@ -136,14 +135,8 @@ class CustomAttributes(BaseAction):
Validation
- action is only for Administrators
'''
success = False
userId = event['source']['user']['id']
user = session.query('User where id is ' + userId).one()
for role in user['user_security_roles']:
if role['security_role']['name'] == 'Administrator':
success = True
return success
return True
def launch(self, session, entities, event):
# JOB SETTINGS
@ -584,14 +577,27 @@ def register(session, **kw):
if not isinstance(session, ftrack_api.session.Session):
return
action_handler = CustomAttributes(session)
action_handler.register()
roleList = ['Pypeclub', 'Administrator']
username = session.api_user
user = session.query('User where username is "{}"'.format(username)).one()
available = False
for role in user['user_security_roles']:
if role['security_role']['name'] in roleList:
available = True
break
if available is True:
CustomAttributes(session).register()
else:
logging.info(
"!!! You're missing required permissions for action {}".format(
CustomAttributes.__name__
)
)
def main(arguments=None):
'''Set up logging and register action.'''
import logging
if arguments is None:
arguments = []

View file

@ -141,8 +141,7 @@ def register(session, **kw):
if not isinstance(session, ftrack_api.session.Session):
return
action_handler = CreateFolders(session)
action_handler.register()
CreateFolders(session).register()
def main(arguments=None):

View file

@ -33,17 +33,7 @@ class DeleteAsset(BaseAction):
if entityType.lower() not in valid:
return False
discover = False
roleList = ['Pypeclub', 'Administrator']
userId = event['source']['user']['id']
user = session.query('User where id is ' + userId).one()
for role in user['user_security_roles']:
if role['security_role']['name'] in roleList:
discover = True
break
return discover
return True
def _launch(self, event):
self.reset_session()
@ -320,7 +310,23 @@ def register(session, **kw):
if not isinstance(session, ftrack_api.session.Session):
return
DeleteAsset(session).register()
roleList = ['Pypeclub', 'Administrator']
username = session.api_user
user = session.query('User where username is "{}"'.format(username)).one()
available = False
for role in user['user_security_roles']:
if role['security_role']['name'] in roleList:
available = True
break
if available is True:
DeleteAsset(session).register()
else:
logging.info(
"!!! You're missing required permissions for action {}".format(
DeleteAsset.__name__
)
)
def main(arguments=None):

View file

@ -21,7 +21,7 @@ class AssetsRemover(BaseAction):
def discover(self, session, entities, event):
''' Validation '''
selection = event["data"].get("selection", None)
if selection is None:
if selection is None or len(selection) != 1:
return False
valid = ["show", "task"]
@ -29,17 +29,7 @@ class AssetsRemover(BaseAction):
if entityType.lower() not in valid:
return False
discover = False
roleList = ['Pypeclub', 'Administrator']
userId = event['source']['user']['id']
user = session.query('User where id is ' + userId).one()
for role in user['user_security_roles']:
if role['security_role']['name'] in roleList:
discover = True
break
return discover
return True
def interface(self, session, entities, event):
if not event['data'].get('values', {}):
@ -145,8 +135,23 @@ def register(session, **kw):
if not isinstance(session, ftrack_api.session.Session):
return
action_handler = AssetsRemover(session)
action_handler.register()
roleList = ['Pypeclub', 'Administrator']
username = session.api_user
user = session.query('User where username is "{}"'.format(username)).one()
available = False
for role in user['user_security_roles']:
if role['security_role']['name'] in roleList:
available = True
break
if available is True:
AssetsRemover(session).register()
else:
logging.info(
"!!! You're missing required permissions for action {}".format(
AssetsRemover.__name__
)
)
def main(arguments=None):

View file

@ -103,9 +103,23 @@ def register(session, **kw):
# return without doing anything.
if not isinstance(session, ftrack_api.session.Session):
return
roleList = ['Pypeclub', 'Administrator']
action_handler = JobKiller(session)
action_handler.register()
username = session.api_user
user = session.query('User where username is "{}"'.format(username)).one()
available = False
for role in user['user_security_roles']:
if role['security_role']['name'] in roleList:
available = True
break
if available is True:
JobKiller(session).register()
else:
logging.info(
"!!! You're missing required permissions for action {}".format(
JobKiller.__name__
)
)
def main(arguments=None):

View file

@ -107,9 +107,9 @@ class AppAction(BaseHandler):
if avalon_project is None:
return False
else:
apps = []
for app in avalon_project['config']['apps']:
apps.append(app['name'])
apps = [app['name'] for app in avalon_project['config'].get(
'apps', []
)]
if self.identifier not in apps:
return False