diff --git a/pype/ftrack/actions/action_prepare_project.py b/pype/ftrack/actions/action_prepare_project.py index 0cdeab4004..427c34519b 100644 --- a/pype/ftrack/actions/action_prepare_project.py +++ b/pype/ftrack/actions/action_prepare_project.py @@ -6,6 +6,8 @@ from pype.ftrack import BaseAction from pypeapp import config from pype.ftrack.lib import get_avalon_attr +from pype.vendor.ftrack_api import session as fa_session + class PrepareProject(BaseAction): '''Edit meta data action.''' @@ -22,6 +24,9 @@ class PrepareProject(BaseAction): os.environ.get('PYPE_STATICS_SERVER', '') ) + # Key to store info about trigerring create folder structure + create_project_structure_key = "create_folder_structure" + def discover(self, session, entities, event): ''' Validation ''' if len(entities) != 1: @@ -74,8 +79,29 @@ class PrepareProject(BaseAction): str([key for key in attributes_to_set]) )) - title = "Set Attribute values" + item_splitter = {'type': 'label', 'value': '---'} + title = "Prepare Project" items = [] + + # Ask if want to trigger Action Create Folder Structure + items.append({ + "type": "label", + "value": "

Want to create basic Folder Structure?

" + }) + + items.append({ + "name": self.create_project_structure_key, + "type": "boolean", + "value": False, + "label": "Check if Yes" + }) + + items.append(item_splitter) + items.append({ + "type": "label", + "value": "

Set basic Attributes:

" + }) + multiselect_enumerators = [] # This item will be last (before enumerators) @@ -88,8 +114,6 @@ class PrepareProject(BaseAction): "label": "AutoSync to Avalon" } - item_splitter = {'type': 'label', 'value': '---'} - for key, in_data in attributes_to_set.items(): attr = in_data["object"] @@ -195,6 +219,10 @@ class PrepareProject(BaseAction): return in_data = event['data']['values'] + + # pop out info about creating project structure + create_proj_struct = in_data.pop(self.create_project_structure_key) + # Find hidden items for multiselect enumerators keys_to_process = [] for key in in_data: @@ -228,6 +256,19 @@ class PrepareProject(BaseAction): session.commit() + # Trigger Create Project Structure action + if create_proj_struct is True: + self.log.debug("Triggering Create Project Structure action") + event = fa_session.ftrack_api.event.base.Event( + topic="ftrack.action.launch", + data=dict( + actionIdentifier="create.project.structure", + selection=event["data"]["selection"] + ), + source=dict(user=event['source']['user']) + ) + session.event_hub.publish(event, on_error='ignore') + return True