Skip to content

collect_celaction_instances

CollectCelactionInstances

Bases: ContextPlugin

Adds the celaction render instances

Source code in client/ayon_celaction/plugins/publish/collect_celaction_instances.py
 5
 6
 7
 8
 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
95
96
class CollectCelactionInstances(pyblish.api.ContextPlugin):
    """ Adds the celaction render instances """

    label = "Collect Celaction Instances"
    order = pyblish.api.CollectorOrder + 0.1

    def process(self, context):
        task = context.data["task"]
        current_file = context.data["currentFile"]
        staging_dir = os.path.dirname(current_file)
        scene_file = os.path.basename(current_file)
        version = context.data["version"]

        folder_entity = context.data["folderEntity"]

        folder_attributes = folder_entity["attrib"]

        shared_instance_data = {
            "folderPath": folder_entity["path"],
            "frameStart": folder_attributes["frameStart"],
            "frameEnd": folder_attributes["frameEnd"],
            "handleStart": folder_attributes["handleStart"],
            "handleEnd": folder_attributes["handleEnd"],
            "fps": folder_attributes["fps"],
            "resolutionWidth": folder_attributes["resolutionWidth"],
            "resolutionHeight": folder_attributes["resolutionHeight"],
            "pixelAspect": 1,
            "step": 1,
            "version": version
        }

        celaction_kwargs = context.data.get(
            "passingKwargs", {})

        if celaction_kwargs:
            shared_instance_data.update(celaction_kwargs)

        # workfile instance
        product_type = "workfile"
        product_name = product_type + task.capitalize()
        # Create instance
        instance = context.create_instance(product_name)

        # creating instance data
        instance.data.update({
            "label": scene_file,
            "productName": product_name,
            "productType": product_type,
            "family": product_type,
            "families": [product_type],
            "representations": []
        })

        # adding basic script data
        instance.data.update(shared_instance_data)

        # creating representation
        representation = {
            'name': 'scn',
            'ext': 'scn',
            'files': scene_file,
            "stagingDir": staging_dir,
        }

        instance.data["representations"].append(representation)

        self.log.info('Publishing Celaction workfile')

        # render instance
        product_name = f"render{task}Main"
        product_type = "render.farm"
        instance = context.create_instance(name=product_name)
        # getting instance state
        instance.data["publish"] = True

        # add folderEntity data into instance
        instance.data.update({
            "label": "{} - farm".format(product_name),
            "productType": product_type,
            "family": product_type,
            "families": [product_type],
            "productName": product_name
        })

        # adding basic script data
        instance.data.update(shared_instance_data)

        self.log.info('Publishing Celaction render instance')
        self.log.debug(f"Instance data: `{instance.data}`")

        for i in context:
            self.log.debug(f"{i.data['families']}")