예제 #1
0
    def update(self, container, representation):
        self.remove(container)
        name = self.load_palette(representation)

        container["representation"] = str(representation["_id"])
        container["name"] = name
        harmony.imprint(name, container)
예제 #2
0
    def remove(self, container):
        """Remove loaded container.

        Args:
            container (dict): Container data.

        """
        node = container.get("nodes").pop()
        harmony.send({"function": "PypeHarmony.deleteNode", "args": [node]})
        harmony.imprint(node, {}, remove=True)
예제 #3
0
    def remove(self, container):
        for node in container.get("nodes"):

            func = """function deleteNode(_node)
            {
                node.deleteNode(_node, true, true);
            }
            deleteNode
            """
            harmony.send({"function": func, "args": [node]})
            harmony.imprint(container['name'], {}, remove=True)
예제 #4
0
    def remove(self, container):
        node = harmony.find_node_by_name(container["name"], "READ")

        func = """function deleteNode(_node)
        {
            node.deleteNode(_node, true, true);
        }
        deleteNode
        """
        harmony.send({"function": func, "args": [node]})
        harmony.imprint(node, {}, remove=True)
예제 #5
0
    def process(self, context, plugin):

        # Get the errored instances
        failed = []
        for result in context.data["results"]:
            if (result["error"] is not None and result["instance"] is not None
                    and result["instance"] not in failed):
                failed.append(result["instance"])

        # Apply pyblish.logic to get the instances for the plug-in
        instances = pyblish.api.instances_by_plugin(failed, plugin)

        for instance in instances:
            data = harmony.read(instance.data["setMembers"][0])
            data["asset"] = os.environ["AVALON_ASSET"]
            harmony.imprint(instance.data["setMembers"][0], data)
예제 #6
0
    def update(self, container, representation):
        node = container.pop("node")

        collections, remainder = clique.assemble(
            os.listdir(
                os.path.dirname(api.get_representation_path(representation))))
        files = []
        for f in list(collections[0]):
            files.append(
                os.path.join(os.path.dirname(self.fname),
                             f).replace("\\", "/"))

        harmony.send({
            "function": copy_files + replace_files,
            "args": [files, node, 1]
        })

        harmony.imprint(node, {"representation": str(representation["_id"])})
예제 #7
0
    def update(self, container, representation):
        node = harmony.find_node_by_name(container["name"], "READ")

        path = api.get_representation_path(representation)
        collections, remainder = clique.assemble(
            os.listdir(os.path.dirname(path)))
        files = []
        if collections:
            for f in list(collections[0]):
                files.append(
                    os.path.join(os.path.dirname(path), f).replace("\\", "/"))
        else:
            files.append(
                os.path.join(os.path.dirname(path),
                             remainder[0]).replace("\\", "/"))

        harmony.send({
            "function": copy_files + replace_files,
            "args": [files, node, 1]
        })

        # Colour node.
        func = """function func(args){
            for( var i =0; i <= args[0].length - 1; ++i)
            {
                var red_color = new ColorRGBA(255, 0, 0, 255);
                var green_color = new ColorRGBA(0, 255, 0, 255);
                if (args[1] == "red"){
                    node.setColor(args[0], red_color);
                }
                if (args[1] == "green"){
                    node.setColor(args[0], green_color);
                }
            }
        }
        func
        """
        if pype.lib.is_latest(representation):
            harmony.send({"function": func, "args": [node, "green"]})
        else:
            harmony.send({"function": func, "args": [node, "red"]})

        harmony.imprint(node, {"representation": str(representation["_id"])})
예제 #8
0
    def update(self, container, representation):
        """Update loaded containers.

        Args:
            container (dict): Container data.
            representation (dict): Representation data.

        """
        node_name = container["name"]
        node = harmony.find_node_by_name(node_name, "GROUP")
        self_name = self.__class__.__name__

        update_and_replace = False
        if pype.lib.is_latest(representation):
            self._set_green(node)
        else:
            self._set_red(node)

        update_and_replace = harmony.send(
            {
                "function": f"PypeHarmony.Loaders.{self_name}."
                            "askForColumnsUpdate",
                "args": []
            }
        )["result"]

        if update_and_replace:
            # FIXME: This won't work, need to implement it.
            harmony.send(
                {
                    "function": f"PypeHarmony.Loaders.{self_name}."
                                "replaceNode",
                    "args": []
                }
            )
        else:
            self.load(
                container["context"], container["name"],
                None, container["data"])

        harmony.imprint(
            node, {"representation": str(representation["_id"])}
        )
예제 #9
0
    def update(self, container, representation):
        """Update loaded containers.

        Args:
            container (dict): Container data.
            representation (dict): Representation data.

        """
        self_name = self.__class__.__name__
        node = container.get("nodes").pop()

        path = api.get_representation_path(representation)
        collections, remainder = clique.assemble(
            os.listdir(os.path.dirname(path)))
        files = []
        if collections:
            for f in list(collections[0]):
                files.append(
                    os.path.join(os.path.dirname(path), f).replace("\\", "/"))
        else:
            files.append(
                os.path.join(os.path.dirname(path),
                             remainder[0]).replace("\\", "/"))

        harmony.send({
            "function": f"PypeHarmony.Loaders.{self_name}.replaceFiles",
            "args": [files, node, 1]
        })

        # Colour node.
        if pype.lib.is_latest(representation):
            harmony.send({
                "function": "PypeHarmony.setColor",
                "args": [node, [0, 255, 0, 255]]
            })
        else:
            harmony.send({
                "function": "PypeHarmony.setColor",
                "args": [node, [255, 0, 0, 255]]
            })

        harmony.imprint(node, {"representation": str(representation["_id"])})
예제 #10
0
    def update(self, container, representation):

        path = api.get_representation_path(representation)

        with open(path) as json_file:
            data = json.load(json_file)

        layers = list()

        for child in data['children']:
            if child.get("filename"):
                print(child["filename"])
                layers.append(child["filename"])
            else:
                for layer in child['children']:
                    if layer.get("filename"):
                        print(layer["filename"])
                        layers.append(layer["filename"])

        bg_folder = os.path.dirname(path)

        path = api.get_representation_path(representation)

        print(container)

        for layer in sorted(layers):
            file_to_import = [os.path.join(bg_folder, layer).replace("\\", "/")]
            print(20*"#")
            print(f"FILE TO REPLACE: {file_to_import}")
            print(f"LAYER: {layer}")
            node = harmony.find_node_by_name(layer, "READ")
            print(f"{node}")

            if node in container['nodes']:
                harmony.send(
                    {
                        "function": copy_files + replace_files,
                        "args": [file_to_import, node, 1]
                    }
                )
            else:
                read_node = harmony.send(
                    {
                        "function": copy_files + import_files,
                        "args": ["Top", file_to_import, layer, 1]
                    }
                )["result"]
                container['nodes'].append(read_node)


            # Colour node.
            func = """function func(args){
                for( var i =0; i <= args[0].length - 1; ++i)
                {
                    var red_color = new ColorRGBA(255, 0, 0, 255);
                    var green_color = new ColorRGBA(0, 255, 0, 255);
                    if (args[1] == "red"){
                        node.setColor(args[0], red_color);
                    }
                    if (args[1] == "green"){
                        node.setColor(args[0], green_color);
                    }
                }
            }
            func
            """
            if pype.lib.is_latest(representation):
                harmony.send({"function": func, "args": [node, "green"]})
            else:
                harmony.send({"function": func, "args": [node, "red"]})

        harmony.imprint(
            container['name'], {"representation": str(representation["_id"]),
                                "nodes": container['nodes']}
        )