Skip to content

base_loaders

Base classes for loaders.

BackdropBaseLoader

Bases: LoaderPlugin

Load nodes into a backdrop.

Source code in client/ayon_harmony/api/base_loaders.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
class BackdropBaseLoader(load.LoaderPlugin):
    """Load nodes into a backdrop."""

    def load(self, context, name=None, namespace=None, data=None):
        """Plugin entry point.

        Args:
            context (:class:`pyblish.api.Context`): Context.
            name (str, optional): Container name.
            namespace (str, optional): Container namespace.
            data (dict, optional): Additional data passed into loader.

        """
        self_name = self.__class__.__name__
        filepath = self.filepath_from_context(context)

        backdrop_name = harmony.send(
            {
                "function": f"AyonHarmony.Loaders.{self_name}.loadContainer",
                "args": [filepath, name],
            }
        )["result"]

        # We must validate the group_node
        return harmony.containerise(
            name,
            namespace,
            backdrop_name,
            context,
            self_name
        )

    def remove(self, container):
        """Remove container.

        Args:
            container (dict): container definition.
        """
        container_backdrop = harmony.find_backdrop_by_name(container["name"])
        if container_backdrop:
            harmony.send(
                {
                    "function": "AyonHarmony.removeBackdrop",
                    "args": [container_backdrop, True]
                }
            )
        harmony.remove(container["name"])

    def update(self, container, context):
        """Update loaded containers.

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

        """
        return self.switch(container, context)

    def switch(self, container, context):
        """Switch representation containers."""
        backdrop_name = container["name"]
        backdrop = harmony.find_backdrop_by_name(backdrop_name)

        # Keep backdrop links
        backdrop_links = harmony.send(
            {
                "function": "AyonHarmony.getBackdropLinks",
                "args": backdrop,
            }
        )["result"]

        # Replace template container
        self.remove(container)  # Before load to avoid node name incrementation
        container = self.load(
            context, container["name"], container["namespace"]
        )

        # Restore backdrop links
        harmony.send(
            {
                "function": "AyonHarmony.setNodesLinks",
                "args": backdrop_links
            }
        )

        return container

load(context, name=None, namespace=None, data=None)

Plugin entry point.

Parameters:

Name Type Description Default
context (

class:pyblish.api.Context): Context.

required
name str

Container name.

None
namespace str

Container namespace.

None
data dict

Additional data passed into loader.

None
Source code in client/ayon_harmony/api/base_loaders.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def load(self, context, name=None, namespace=None, data=None):
    """Plugin entry point.

    Args:
        context (:class:`pyblish.api.Context`): Context.
        name (str, optional): Container name.
        namespace (str, optional): Container namespace.
        data (dict, optional): Additional data passed into loader.

    """
    self_name = self.__class__.__name__
    filepath = self.filepath_from_context(context)

    backdrop_name = harmony.send(
        {
            "function": f"AyonHarmony.Loaders.{self_name}.loadContainer",
            "args": [filepath, name],
        }
    )["result"]

    # We must validate the group_node
    return harmony.containerise(
        name,
        namespace,
        backdrop_name,
        context,
        self_name
    )

remove(container)

Remove container.

Parameters:

Name Type Description Default
container dict

container definition.

required
Source code in client/ayon_harmony/api/base_loaders.py
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
def remove(self, container):
    """Remove container.

    Args:
        container (dict): container definition.
    """
    container_backdrop = harmony.find_backdrop_by_name(container["name"])
    if container_backdrop:
        harmony.send(
            {
                "function": "AyonHarmony.removeBackdrop",
                "args": [container_backdrop, True]
            }
        )
    harmony.remove(container["name"])

switch(container, context)

Switch representation containers.

Source code in client/ayon_harmony/api/base_loaders.py
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
def switch(self, container, context):
    """Switch representation containers."""
    backdrop_name = container["name"]
    backdrop = harmony.find_backdrop_by_name(backdrop_name)

    # Keep backdrop links
    backdrop_links = harmony.send(
        {
            "function": "AyonHarmony.getBackdropLinks",
            "args": backdrop,
        }
    )["result"]

    # Replace template container
    self.remove(container)  # Before load to avoid node name incrementation
    container = self.load(
        context, container["name"], container["namespace"]
    )

    # Restore backdrop links
    harmony.send(
        {
            "function": "AyonHarmony.setNodesLinks",
            "args": backdrop_links
        }
    )

    return container

update(container, context)

Update loaded containers.

Parameters:

Name Type Description Default
container dict

Container data.

required
context dict

Representation context data.

required
Source code in client/ayon_harmony/api/base_loaders.py
57
58
59
60
61
62
63
64
65
def update(self, container, context):
    """Update loaded containers.

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

    """
    return self.switch(container, context)