From db960eb6d44215f554845d3090835cbad0b586ab Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Tue, 14 Apr 2020 17:00:04 +0200 Subject: [PATCH 1/6] missing options from ass loader --- pype/plugins/maya/load/load_ass.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pype/plugins/maya/load/load_ass.py b/pype/plugins/maya/load/load_ass.py index 83dd80bd4e..929ff2450a 100644 --- a/pype/plugins/maya/load/load_ass.py +++ b/pype/plugins/maya/load/load_ass.py @@ -16,7 +16,7 @@ class AssProxyLoader(pype.maya.plugin.ReferenceLoader): icon = "code-fork" color = "orange" - def process_reference(self, context, name, namespace, data): + def process_reference(self, context, name, namespace, options): import maya.cmds as cmds from avalon import maya @@ -164,7 +164,7 @@ class AssStandinLoader(api.Loader): icon = "code-fork" color = "orange" - def load(self, context, name, namespace, data): + def load(self, context, name, namespace, options): import maya.cmds as cmds import avalon.maya.lib as lib From 565a70f558f7a93b5f83640bc62bf13555ca260b Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Tue, 14 Apr 2020 17:00:25 +0200 Subject: [PATCH 2/6] adding avalon project to deadline publish job --- pype/plugins/global/publish/submit_publish_job.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pype/plugins/global/publish/submit_publish_job.py b/pype/plugins/global/publish/submit_publish_job.py index a6f2d5d79b..843760f9ec 100644 --- a/pype/plugins/global/publish/submit_publish_job.py +++ b/pype/plugins/global/publish/submit_publish_job.py @@ -155,6 +155,7 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin): "PYPE_METADATA_FILE", "PYPE_STUDIO_PROJECTS_PATH", "PYPE_STUDIO_PROJECTS_MOUNT", + "AVALON_PROJECT" ] # pool used to do the publishing job From 4c582f548f0b2d558d49bc7983221d94035a1010 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Tue, 14 Apr 2020 17:00:47 +0200 Subject: [PATCH 3/6] various attribute fixes in ftrack sync event --- pype/ftrack/lib/avalon_sync.py | 75 +++++++++++++++++----------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/pype/ftrack/lib/avalon_sync.py b/pype/ftrack/lib/avalon_sync.py index 6f928914bf..474c70bd26 100644 --- a/pype/ftrack/lib/avalon_sync.py +++ b/pype/ftrack/lib/avalon_sync.py @@ -806,12 +806,12 @@ class SyncEntitiesFactory: def set_hierarchical_attribute(self, hier_attrs, sync_ids): # collect all hierarchical attribute keys # and prepare default values to project - attribute_names = [] - attribute_ids = [] + attributes_by_key = {} + attribute_key_by_id = {} for attr in hier_attrs: key = attr["key"] - attribute_ids.append(attr["id"]) - attribute_names.append(key) + attribute_key_by_id[attr["id"]] = key + attributes_by_key[key] = attr store_key = "hier_attrs" if key.startswith("avalon_"): @@ -824,11 +824,11 @@ class SyncEntitiesFactory: # Prepare dict with all hier keys and None values prepare_dict = {} prepare_dict_avalon = {} - for attr in attribute_names: - if attr.startswith("avalon_"): - prepare_dict_avalon[attr] = None + for key in attributes_by_key.keys(): + if key.startswith("avalon_"): + prepare_dict_avalon[key] = None else: - prepare_dict[attr] = None + prepare_dict[key] = None for id, entity_dict in self.entities_dict.items(): # Skip project because has stored defaults at the moment @@ -842,32 +842,32 @@ class SyncEntitiesFactory: entity_ids_joined = ", ".join([ "\"{}\"".format(id) for id in sync_ids ]) - attributes_joined = ", ".join([ - "\"{}\"".format(name) for name in attribute_ids - ]) - call_expr = [{ - "action": "query", - "expression": ( - "select value, entity_id from CustomAttributeValue " - "where entity_id in ({}) and configuration_id in ({})" - ).format(entity_ids_joined, attributes_joined) - }] - if hasattr(self.session, "call"): - [values] = self.session.call(call_expr) - else: - [values] = self.session._call(call_expr) avalon_hier = [] - for value in values["data"]: - if value["value"] is None: - continue - entity_id = value["entity_id"] - key = value["configuration"]["key"] - store_key = "hier_attrs" - if key.startswith("avalon_"): - store_key = "avalon_attrs" - avalon_hier.append(key) - self.entities_dict[entity_id][store_key][key] = value["value"] + for configuration_id in attribute_key_by_id.keys(): + call_expr = [{ + "action": "query", + "expression": ( + "select value, entity_id from CustomAttributeValue " + "where entity_id in ({}) and configuration_id is \"{}\"" + ).format(entity_ids_joined, configuration_id) + }] + if hasattr(self.session, "call"): + [values] = self.session.call(call_expr) + else: + [values] = self.session._call(call_expr) + + for value in values["data"]: + if value["value"] is None: + continue + entity_id = value["entity_id"] + key = attribute_key_by_id[value["configuration_id"]] + if key.startswith("avalon_"): + store_key = "avalon_attrs" + avalon_hier.append(key) + else: + store_key = "hier_attrs" + self.entities_dict[entity_id][store_key][key] = value["value"] # Get dictionary with not None hierarchical values to pull to childs top_id = self.ft_project_id @@ -888,13 +888,14 @@ class SyncEntitiesFactory: hier_values, parent_id = hier_down_queue.get() for child_id in self.entities_dict[parent_id]["children"]: _hier_values = hier_values.copy() - for name in attribute_names: - store_key = "hier_attrs" - if name.startswith("avalon_"): + for key in attributes_by_key.keys(): + if key.startswith("avalon_"): store_key = "avalon_attrs" - value = self.entities_dict[child_id][store_key][name] + else: + store_key = "hier_attrs" + value = self.entities_dict[child_id][store_key][key] if value is not None: - _hier_values[name] = value + _hier_values[key] = value self.entities_dict[child_id]["hier_attrs"].update(_hier_values) hier_down_queue.put((_hier_values, child_id)) From f1765e5aa146aeccd0d88c5273ade09c14f29501 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Mon, 20 Apr 2020 22:14:07 +0200 Subject: [PATCH 4/6] bump version --- pype/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/version.py b/pype/version.py index 2614ce9d96..892994aa6c 100644 --- a/pype/version.py +++ b/pype/version.py @@ -1 +1 @@ -__version__ = "2.7.0" +__version__ = "2.8.0" From f23fd2ab1bd20516f3d7b8774cccbd0e4b284f3e Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Mon, 20 Apr 2020 22:17:12 +0200 Subject: [PATCH 5/6] fix possibility of version missing from review --- pype/plugins/nukestudio/publish/collect_reviews.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pype/plugins/nukestudio/publish/collect_reviews.py b/pype/plugins/nukestudio/publish/collect_reviews.py index 7cf8d77de4..b91d390e2e 100644 --- a/pype/plugins/nukestudio/publish/collect_reviews.py +++ b/pype/plugins/nukestudio/publish/collect_reviews.py @@ -151,13 +151,16 @@ class CollectReviews(api.InstancePlugin): "handleStart", "handleEnd", "sourceIn", "sourceOut", "frameStart", "frameEnd", "sourceInH", "sourceOutH", "clipIn", "clipOut", "clipInH", "clipOutH", "asset", - "track", "version" + "track" ] version_data = dict() # pass data to version version_data.update({k: instance.data[k] for k in transfer_data}) + if 'version' in instance.data: + version_data["version"] = instance.data[version] + # add to data of representation version_data.update({ "colorspace": item.sourceMediaColourTransform(), From 3ce24febff017a1677cde6ac6634112619aead7d Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Mon, 20 Apr 2020 22:26:12 +0200 Subject: [PATCH 6/6] remove hardcoded render tempalte --- pype/plugins/global/publish/extract_burnin.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pype/plugins/global/publish/extract_burnin.py b/pype/plugins/global/publish/extract_burnin.py index 01fdaed54b..7668eafd2a 100644 --- a/pype/plugins/global/publish/extract_burnin.py +++ b/pype/plugins/global/publish/extract_burnin.py @@ -132,13 +132,14 @@ class ExtractBurnin(pype.api.Extractor): slate_duration = duration_cp # exception for slate workflow - if ("slate" in instance.data["families"]): + if "slate" in instance.data["families"]: if "slate-frame" in repre.get("tags", []): slate_frame_start = frame_start_cp - 1 slate_frame_end = frame_end_cp slate_duration = duration_cp + 1 - self.log.debug("__1 slate_frame_start: {}".format(slate_frame_start)) + self.log.debug("__1 slate_frame_start: {}".format( + slate_frame_start)) _prep_data.update({ "slate_frame_start": slate_frame_start, @@ -192,7 +193,6 @@ class ExtractBurnin(pype.api.Extractor): self.log.debug("Output: {}".format(output)) repre_update = { - "anatomy_template": "render", "files": movieFileBurnin, "name": repre["name"], "tags": [x for x in repre["tags"] if x != "delete"]