Skip to content

collect_auto_review

Requires

None

Provides

instance -> productType ("review")

CollectAutoReview

Bases: ContextPlugin

Create review instance in non artist based workflow.

Called only if PS is triggered in Webpublisher or in tests.

Source code in client/ayon_photoshop/plugins/publish/collect_auto_review.py
 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
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
class CollectAutoReview(pyblish.api.ContextPlugin):
    """Create review instance in non artist based workflow.

    Called only if PS is triggered in Webpublisher or in tests.
    """

    label = "Collect Auto Review"
    hosts = ["photoshop"]
    order = pyblish.api.CollectorOrder + 0.2
    targets = ["automated"]

    publish = True

    def process(self, context):
        product_type = "review"
        has_review = False
        for instance in context:
            if instance.data["productType"] == product_type:
                self.log.debug("Review instance found, won't create new")
                has_review = True

            creator_attributes = instance.data.get("creator_attributes", {})
            if (creator_attributes.get("mark_for_review") and
                    "review" not in instance.data["families"]):
                instance.data["families"].append("review")

        if has_review:
            return

        stub = photoshop.stub()
        stored_items = stub.get_layers_metadata()
        for item in stored_items:
            if item.get("creator_identifier") == product_type:
                if not item.get("active"):
                    self.log.debug("Review instance disabled")
                    return

        auto_creator = context.data["project_settings"].get(
            "photoshop", {}).get(
            "create", {}).get(
            "ReviewCreator", {})

        if not auto_creator or not auto_creator["enabled"]:
            self.log.debug("Review creator disabled, won't create new")
            return

        variant = (context.data.get("variant") or
                   auto_creator["default_variant"])

        project_name = context.data["projectName"]
        proj_settings = context.data["project_settings"]
        host_name = context.data["hostName"]
        folder_entity = context.data["folderEntity"]
        task_entity = context.data["taskEntity"]
        task_name = task_type = None
        if task_entity:
            task_name = task_entity["name"]
            task_type = task_entity["taskType"]

        get_product_name_kwargs = {}
        if getattr(get_product_name, "use_entities", False):
            get_product_name_kwargs.update({
                "folder_entity": folder_entity,
                "task_entity": task_entity,
                # TODO (antirotor): handle product_base_type properly
                "product_base_type": product_type,
            })
        else:
            get_product_name_kwargs.update({
                "task_name": task_name,
                "task_type": task_type,
            })

        product_name = get_product_name(
            project_name=project_name,
            host_name=host_name,
            product_type=product_type,
            variant=variant,
            project_settings=proj_settings,
            **get_product_name_kwargs
        )

        instance = context.create_instance(product_name)
        instance.data.update({
            "label": product_name,
            "name": product_name,
            "productName": product_name,
            "productType": product_type,
            # TODO (antirotor): handle product_base_type properly
            "productBaseType": product_type,
            "family": product_type,
            "families": [product_type],
            "representations": [],
            "folderPath": folder_entity["path"],
            "publish": self.publish
        })

        self.log.debug("auto review created::{}".format(instance.data))