diff --git a/pype/plugins/ftrack/integrate_ftrack_api.py b/pype/plugins/ftrack/integrate_ftrack_api.py index ed70302ecc..279dfb9b54 100644 --- a/pype/plugins/ftrack/integrate_ftrack_api.py +++ b/pype/plugins/ftrack/integrate_ftrack_api.py @@ -28,6 +28,7 @@ class IntegrateFtrackApi(pyblish.api.InstancePlugin): queries = [] for key, value in data.iteritems(): if not isinstance(value, (basestring, int)): + self.log.info(value) if "id" in value.keys(): queries.append( "{0}.id is \"{1}\"".format(key, value["id"]) diff --git a/pype/plugins/ftrack/integrate_ftrack_instances.py b/pype/plugins/ftrack/integrate_ftrack_instances.py index eb0bbb009c..00410e35c1 100644 --- a/pype/plugins/ftrack/integrate_ftrack_instances.py +++ b/pype/plugins/ftrack/integrate_ftrack_instances.py @@ -24,7 +24,8 @@ class IntegrateFtrackInstance(pyblish.api.InstancePlugin): 'setdress': 'setdress', 'pointcache': 'cache', 'write': 'img', - 'render': 'render'} + 'render': 'render', + 'review': 'mov'} def process(self, instance): @@ -43,9 +44,7 @@ class IntegrateFtrackInstance(pyblish.api.InstancePlugin): dst_list = instance.data['destination_list'] ft_session = instance.context.data["ftrackSession"] - location = ft_session.query( - 'Location where name is "ftrack.unmanaged"').one() - self.log.debug('location {}'.format(location)) + for file in instance.data['destination_list']: self.log.debug('file {}'.format(file)) @@ -53,18 +52,34 @@ class IntegrateFtrackInstance(pyblish.api.InstancePlugin): for file in dst_list: filename, ext = os.path.splitext(file) self.log.debug('dest ext: ' + ext) + thumbnail = False - if family == 'review': - component_name = "ftrackreview-mp4" + if ext in ['.mov']: location = ft_session.query( - 'Location where name is "ftrack.server"').one() - metadata = {'ftr_meta': json.dumps({ - 'frameIn': int(instance.data["startFrame"]), - 'frameOut': int(instance.data["startFrame"]), - 'frameRate': 25})} + 'Location where name is "ftrack.server"').one() + component_data = { + "name": "ftrackreview-mp4", # Default component name is "main". + "metadata": {'ftr_meta': json.dumps({ + 'frameIn': int(instance.data["startFrame"]), + 'frameOut': int(instance.data["startFrame"]), + 'frameRate': 25})} + } + elif ext in [".jpg"]: + component_data = { + "name": "thumbnail" # Default component name is "main". + } + thumbnail = True + location = ft_session.query( + 'Location where name is "ftrack.server"').one() else: - component_name = ext[1:] - metadata = None + component_data = { + "name": ext[1:] # Default component name is "main". + } + + location = ft_session.query( + 'Location where name is "ftrack.unmanaged"').one() + + self.log.debug('location {}'.format(location)) componentList.append({"assettype_data": { "short": asset_type, @@ -75,13 +90,11 @@ class IntegrateFtrackInstance(pyblish.api.InstancePlugin): "assetversion_data": { "version": version_number, }, - "component_data": { - "name": component_name, # Default component name is "main". - "metadata": metadata - }, + "component_data": component_data, "component_path": file, 'component_location': location, - "component_overwrite": False + "component_overwrite": False, + "thumbnail": thumbnail } ) diff --git a/pype/plugins/ftrack/integrate_ftrack_review.py b/pype/plugins/ftrack/integrate_ftrack_review.py index 89084e1404..a00100d1e1 100644 --- a/pype/plugins/ftrack/integrate_ftrack_review.py +++ b/pype/plugins/ftrack/integrate_ftrack_review.py @@ -4,7 +4,7 @@ import clique import json -class IntegrateFtrackInstance(pyblish.api.InstancePlugin): +class IntegrateFtrackReview(pyblish.api.InstancePlugin): """Collect ftrack component data Add ftrack component list to instance. @@ -13,75 +13,73 @@ class IntegrateFtrackInstance(pyblish.api.InstancePlugin): """ order = pyblish.api.IntegratorOrder + 0.48 - label = 'Integrate Ftrack Component' + label = 'Integrate Ftrack Review' families = ['review', 'ftrack'] - family_mapping = {'camera': 'cam', - 'look': 'look', - 'mayaAscii': 'scene', - 'model': 'geo', - 'rig': 'rig', - 'setdress': 'setdress', - 'pointcache': 'cache', - 'review': 'mov', - 'write': 'img', - 'render': 'render'} + family_mapping = {'review': 'mov' + } def process(self, instance): self.log.debug('instance {}'.format(instance)) - - assumed_data = instance.data["assumedTemplateData"] - assumed_version = assumed_data["version"] - version_number = int(assumed_version) - family = instance.data['family'].lower() - asset_type = '' - - asset_type = self.family_mapping[family] - - componentList = [] - - dst_list = instance.data['destination_list'] - - ft_session = instance.context.data["ftrackSession"] - - - for file in instance.data['destination_list']: - self.log.debug('file {}'.format(file)) - - for file in dst_list: - filename, ext = os.path.splitext(file) - self.log.debug('dest ext: ' + ext) - - component_name = "ftrackreview-mp4" - location = ft_session.query( - 'Location where name is "ftrack.server"').one() - metadata = {'ftr_meta': json.dumps({ - 'frameIn': int(instance.data["startFrame"]), - 'frameOut': int(instance.data["startFrame"]), - 'frameRate': 25})} - - - componentList.append({"assettype_data": { - "short": asset_type, - }, - "asset_data": { - "name": instance.data["subset"], - }, - "assetversion_data": { - "version": version_number, - }, - "component_data": { - "name": component_name, # Default component name is "main". - "metadata": metadata - }, - "component_path": file, - 'component_location': location, - "component_overwrite": False - } - ) - - - - self.log.debug('componentsList: {}'.format(str(componentList))) - instance.data["ftrackComponentsList"] = componentList + # + # assumed_data = instance.data["assumedTemplateData"] + # assumed_version = assumed_data["version"] + # version_number = int(assumed_version) + # family = instance.data['family'].lower() + # asset_type = '' + # + # asset_type = self.family_mapping[family] + # + # componentList = [] + # + # dst_list = instance.data['destination_list'] + # + # ft_session = instance.context.data["ftrackSession"] + # + # + # for file in instance.data['destination_list']: + # self.log.debug('file {}'.format(file)) + # + # for file in dst_list: + # filename, ext = os.path.splitext(file) + # self.log.debug('dest ext: ' + ext) + # + # if ext == '.mov': + # component_name = "ftrackreview-mp4" + # metadata = {'ftr_meta': json.dumps({ + # 'frameIn': int(instance.data["startFrame"]), + # 'frameOut': int(instance.data["startFrame"]), + # 'frameRate': 25})} + # thumbnail = False + # + # else: + # component_name = "thumbnail" + # thumbnail = True + # + # location = ft_session.query( + # 'Location where name is "ftrack.server"').one() + # + # componentList.append({"assettype_data": { + # "short": asset_type, + # }, + # "asset_data": { + # "name": instance.data["subset"], + # }, + # "assetversion_data": { + # "version": version_number, + # }, + # "component_data": { + # "name": component_name, # Default component name is "main". + # "metadata": metadata + # }, + # "component_path": file, + # 'component_location': location, + # "component_overwrite": False, + # "thumbnail": thumbnail + # } + # ) + # + # + # self.log.debug('componentsList: {}'.format(str(componentList))) + # instance.data["ftrackComponentsList"] = componentList diff --git a/pype/plugins/maya/publish/collect_instances.py b/pype/plugins/maya/publish/collect_instances.py index 807b57c710..e0f929f004 100644 --- a/pype/plugins/maya/publish/collect_instances.py +++ b/pype/plugins/maya/publish/collect_instances.py @@ -46,6 +46,8 @@ class CollectInstances(pyblish.api.ContextPlugin): objectset = cmds.ls("*.id", long=True, type="objectSet", recursive=True, objectsOnly=True) + + context.data['objectsets'] = objectset for objset in objectset: if not cmds.attributeQuery("id", node=objset, exists=True): diff --git a/pype/plugins/maya/publish/collect_review.py b/pype/plugins/maya/publish/collect_review.py index 14e56ec596..f246a4c29f 100644 --- a/pype/plugins/maya/publish/collect_review.py +++ b/pype/plugins/maya/publish/collect_review.py @@ -1,6 +1,8 @@ from maya import cmds +import pymel.core as pm import pyblish.api +import avalon.api class CollectReviewData(pyblish.api.InstancePlugin): """Collect Review data @@ -15,3 +17,36 @@ class CollectReviewData(pyblish.api.InstancePlugin): # make ftrack publishable instance.data["families"] = ['ftrack'] + context = instance.context + + task = avalon.api.Session["AVALON_TASK"] + # pseudo code + + # get cameras + members = instance.data['setMembers'] + cameras = cmds.ls(members, long=True, + dag=True, cameras=True) + self.log.debug('members: {}'.format(members)) + + # validate required settings + assert len(cameras) == 1, "Not a single camera found in extraction" + camera = cameras[0] + self.log.debug('camera: {}'.format(camera)) + + objectset = context.data['objectsets'] + + reviewable_subset = None + reviewable_subset = list(set(members) & set(objectset)) + assert len(reviewable_subset) == 1, "Multiple subsets for review" + self.log.debug('subset for review: {}'.format(reviewable_subset)) + + for inst in context: + self.log.debug('instance: {}'.format(instance)) + if inst.name == reviewable_subset[0]: + inst.data['families'].append('review') + inst.data['review_camera'] = camera + self.log.info('adding review family to {}'.format(reviewable_subset)) + cmds.setAttr(str(instance) + '.active', 0) + + instance.data['subset'] = task + 'Review' + instance.data['review_camera'] = camera diff --git a/pype/plugins/maya/publish/extract_quicktime.py b/pype/plugins/maya/publish/extract_quicktime.py index 0059eef897..149cf6a42d 100644 --- a/pype/plugins/maya/publish/extract_quicktime.py +++ b/pype/plugins/maya/publish/extract_quicktime.py @@ -39,6 +39,7 @@ class ExtractQuicktime(pype.api.Extractor): label = "Quicktime" hosts = ["maya"] families = ["review"] + optional = True def process(self, instance): self.log.info("Extracting capture..") @@ -53,12 +54,13 @@ class ExtractQuicktime(pype.api.Extractor): # get cameras members = instance.data['setMembers'] - cameras = cmds.ls(members, leaf=True, shapes=True, long=True, - dag=True, type="camera") + camera = instance.data['review_camera'] + # cameras = cmds.ls(members, leaf=True, shapes=True, long=True, + # dag=True, type="camera") - # validate required settings - assert len(cameras) == 1, "Not a single camera found in extraction" - camera = cameras[0] + # # validate required settings + # assert len(cameras) == 1, "Not a single camera found in extraction" + # camera = cameras[0] # project_code = ftrack_data['Project']['code'] diff --git a/pype/plugins/maya/publish/extract_thumbnail.py b/pype/plugins/maya/publish/extract_thumbnail.py index e21ed63aef..8bcd017729 100644 --- a/pype/plugins/maya/publish/extract_thumbnail.py +++ b/pype/plugins/maya/publish/extract_thumbnail.py @@ -47,14 +47,8 @@ class ExtractThumbnail(pype.api.Extractor): end = cmds.currentTime(query=True) self.log.info("start: {}, end: {}".format(start, end)) - # get cameras members = instance.data['setMembers'] - cameras = cmds.ls(members, leaf=True, shapes=True, long=True, - dag=True, type="camera") - - # validate required settings - assert len(cameras) == 1, "Not a single camera found in extraction" - camera = cameras[0] + camera = instance.data['review_camera'] # project_code = ftrack_data['Project']['code'] @@ -134,9 +128,9 @@ class ExtractThumbnail(pype.api.Extractor): with maintained_time(): playblast = capture_gui.lib.capture_scene(preset) - thumbnail = filename + ".jpg" + _, thumbnail = os.path.split(playblast) - self.log.info("file list {}".format(playblast)) + self.log.info("file list {}".format(thumbnail)) # self.log.info("Calculating HUD data overlay") # stagingdir = "C:/Users/milan.kolar/AppData/Local/Temp/pyblish_tmp_ucsymm"