Merged in feature/PYPE-235_ftrack_minor_fixes (pull request #89)

Feature/PYPE-235 ftrack minor fixes

Approved-by: Milan Kolar <milan@orbi.tools>
This commit is contained in:
Jakub Trllo 2019-03-08 11:29:09 +00:00 committed by Milan Kolar
commit e343a419e0
10 changed files with 38 additions and 38 deletions

View file

@ -137,7 +137,7 @@ class CustomAttributes(BaseAction):
'dynamic enumerator', 'number'
]
def prediscover(self, event):
def discover(self, session, entities, event):
'''
Validation
- action is only for Administrators

View file

@ -26,7 +26,7 @@ class CreateFolders(BaseAction):
'698620-icon-105-folder-add-512.png'
)
def prediscover(self, event):
def discover(self, session, entities, event):
''' Validation '''
return True

View file

@ -28,14 +28,13 @@ class DeleteAsset(BaseAction):
value = None
def prediscover(self, event):
def discover(self, session, entities, event):
''' Validation '''
selection = event["data"].get("selection", None)
if selection is None or len(selection) > 1:
if len(entities) != 1:
return False
valid = ["task"]
entityType = selection[0].get("entityType", "")
entityType = event["data"]["selection"][0].get("entityType", "")
if entityType.lower() not in valid:
return False

View file

@ -25,14 +25,13 @@ class AssetsRemover(BaseAction):
#: Db
db = DbConnector()
def prediscover(self, event):
def discover(self, session, entities, event):
''' Validation '''
selection = event["data"].get("selection", None)
if selection is None or len(selection) != 1:
if len(entities) != 1:
return False
valid = ["show", "task"]
entityType = selection[0].get("entityType", "")
entityType = event["data"]["selection"][0].get("entityType", "")
if entityType.lower() not in valid:
return False

View file

@ -23,7 +23,8 @@ class JobKiller(BaseAction):
'https://cdn2.iconfinder.com/data/icons/new-year-resolutions/64/'
'resolutions-23-512.png'
)
def prediscover(self, event):
def discover(self, session, entities, event):
''' Validation '''
return True

View file

@ -26,12 +26,13 @@ class TestAction(BaseAction):
#: priority
priority = 10000
#: roles that are allowed to register this action
role_list = ['Pypecub']
role_list = ['Pypeclub']
icon = (
'https://cdn4.iconfinder.com/data/icons/hospital-19/512/'
'8_hospital-512.png'
)
def prediscover(self, event):
def discover(self, session, entities, event):
''' Validation '''
return True

View file

@ -7,11 +7,8 @@ class CollectEntities(BaseEvent):
priority = 1
def _launch(self, event):
entities, entity_types = self.translate_event(event)
entities_count = len(entities)
event['data']['entities'] = entities
event['data']['entity_types'] = entity_types
event['data']['entities_count'] = entities_count
entities = self.translate_event(event)
event['data']['entities_object'] = entities
return True
@ -19,16 +16,14 @@ class CollectEntities(BaseEvent):
selection = event['data'].get('selection', [])
entities = list()
entity_types = set()
for entity in selection:
ent = self.session.get(
self.get_entity_type(entity),
entity.get('entityId')
)
entities.append(ent)
entity_types.add(ent.entity_type)
return [entities, entity_types]
return entities
def get_entity_type(self, entity):
'''Return translated entity type tht can be used with API.'''
@ -61,6 +56,13 @@ class CollectEntities(BaseEvent):
priority=self.priority
)
self.session.event_hub.subscribe(
'topic=ftrack.action.launch'
' and source.user.username={0}'.format(self.session.api_user),
self._launch,
priority=self.priority
)
def register(session, **kw):
'''Register plugin. Called when used as an plugin.'''

View file

@ -457,12 +457,17 @@ def get_avalon_project(ft_project):
def get_project_config(entity):
config = {}
config['schema'] = pypelib.get_avalon_project_config_schema()
config['tasks'] = [{'name': ''}]
config['tasks'] = get_tasks(entity)
config['apps'] = get_project_apps(entity)
config['template'] = pypelib.get_avalon_project_template()
return config
def get_tasks(project):
return [
{'name': task_type['name']} for task_type in project[
'project_schema']['_task_type_schema']['types']
]
def get_project_apps(entity):
""" Get apps from project

View file

@ -62,7 +62,6 @@ class BaseAction(BaseHandler):
)
def _launch(self, event):
self.reset_session()
args = self._translate_event(
self.session, event
)

View file

@ -92,11 +92,10 @@ class BaseHandler(object):
label = '{} {}'.format(self.label, self.variant)
try:
result = func(*args, **kwargs)
self.log.info((
'{} "{}" Launched'
).format(self.type, label))
return result
return func(*args, **kwargs)
except Exception as e:
self.log.error('{} "{}": Launch failed ({})'.format(
self.type, label, str(e))
@ -129,25 +128,20 @@ class BaseHandler(object):
'icon': self.icon,
}]
}
accepts = self.prediscover(event)
if accepts is None:
args = self._translate_event(
self.session, event
)
accepts = self.discover(
self.session, *args
)
args = self._translate_event(
self.session, event
)
accepts = self.discover(
self.session, *args
)
if accepts is True:
self.log.debug(u'Discovering action with selection: {0}'.format(
event['data'].get('selection', [])))
return items
def prediscover(self, event):
"return True if can handle selected entities before handling entities"
return None
def discover(self, session, entities, event):
'''Return true if we can handle the selected entities.
@ -170,7 +164,7 @@ class BaseHandler(object):
'''Return *event* translated structure to be used with the API.'''
'''Return *event* translated structure to be used with the API.'''
_entities = event['data'].get('entities', None)
_entities = event['data'].get('entities_object', None)
if _entities is None:
selection = event['data'].get('selection', [])
_entities = []