mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 00:44:52 +01:00
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:
commit
e343a419e0
10 changed files with 38 additions and 38 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.'''
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ class BaseAction(BaseHandler):
|
|||
)
|
||||
|
||||
def _launch(self, event):
|
||||
self.reset_session()
|
||||
args = self._translate_event(
|
||||
self.session, event
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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 = []
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue