From 04da60da6f296e12dc5cdb82db7f595627bf8f02 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 11 Dec 2020 14:42:01 +0100 Subject: [PATCH 1/2] imlemented action that check and reset invalid metadata key --- .../tvpaint/publish/collect_workfile_data.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pype/plugins/tvpaint/publish/collect_workfile_data.py b/pype/plugins/tvpaint/publish/collect_workfile_data.py index c6179b76cf..4116de1796 100644 --- a/pype/plugins/tvpaint/publish/collect_workfile_data.py +++ b/pype/plugins/tvpaint/publish/collect_workfile_data.py @@ -6,6 +6,36 @@ import avalon.api from avalon.tvpaint import pipeline, lib +class ResetTVPaintWorkfileMetadata(pyblish.api.Action): + """Fix invalid metadata in workfile.""" + label = "Reset invalid workfile metadata" + on = "failed" + + def process(self, context, plugin): + metadata_keys = { + pipeline.SECTION_NAME_CONTEXT: {}, + pipeline.SECTION_NAME_INSTANCES: [], + pipeline.SECTION_NAME_CONTAINERS: [] + } + for metadata_key, default in metadata_keys.items(): + json_string = pipeline.get_workfile_metadata_string(metadata_key) + if not json_string: + continue + + try: + return json.loads(json_string) + except Exception: + self.log.warning( + ( + "Couldn't parse metadata from key \"{}\"." + " Will reset to default value \"{}\"." + " Loaded value was: {}" + ).format(metadata_key, default, json_string), + exc_info=True + ) + pipeline.write_workfile_metadata(metadata_key, default) + + class CollectWorkfileData(pyblish.api.ContextPlugin): label = "Collect Workfile Data" order = pyblish.api.CollectorOrder - 1.01 From 7540e5d393d3ae00ad7109bdfe72a897ef45e0c8 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 11 Dec 2020 14:42:13 +0100 Subject: [PATCH 2/2] add repair action to tvpaint collector --- pype/plugins/tvpaint/publish/collect_workfile_data.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pype/plugins/tvpaint/publish/collect_workfile_data.py b/pype/plugins/tvpaint/publish/collect_workfile_data.py index 4116de1796..6af659297d 100644 --- a/pype/plugins/tvpaint/publish/collect_workfile_data.py +++ b/pype/plugins/tvpaint/publish/collect_workfile_data.py @@ -40,6 +40,7 @@ class CollectWorkfileData(pyblish.api.ContextPlugin): label = "Collect Workfile Data" order = pyblish.api.CollectorOrder - 1.01 hosts = ["tvpaint"] + actions = [ResetTVPaintWorkfileMetadata] def process(self, context): current_project_id = lib.execute_george("tv_projectcurrentid")