Skip to content

Commit

Permalink
Merge pull request #3 from quadproduction/mod_kitsu_implement_pyblish…
Browse files Browse the repository at this point in the history
…_plugins

Module kitsu implement pyblish plugins
  • Loading branch information
Tilix4 authored May 12, 2022
2 parents e0bd877 + 7787056 commit 63fe5a0
Show file tree
Hide file tree
Showing 7 changed files with 198 additions and 49 deletions.
18 changes: 18 additions & 0 deletions openpype/modules/kitsu/plugins/publish/collect_kitsu_credential.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
import os

import gazu
import pyblish.api


class CollectKitsuSession(pyblish.api.ContextPlugin): #rename log in
"""Collect Kitsu session using user credentials"""

order = pyblish.api.CollectorOrder
label = "Kitsu user session"
# families = ["kitsu"]

def process(self, context):

gazu.client.set_host(os.environ["KITSU_SERVER"])
gazu.log_in(os.environ["KITSU_LOGIN"], os.environ["KITSU_PWD"])
65 changes: 65 additions & 0 deletions openpype/modules/kitsu/plugins/publish/collect_kitsu_entities.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# -*- coding: utf-8 -*-
import os

import gazu
import pyblish.api


class CollectKitsuEntities(pyblish.api.ContextPlugin):
"""Collect Kitsu entities according to the current context"""

order = pyblish.api.CollectorOrder + 0.499
label = "Kitsu entities"

def process(self, context):

asset_data = context.data["assetEntity"]["data"]
zou_asset_data = asset_data.get("zou")
if not zou_asset_data:
raise AssertionError("Zou asset data not found in OpenPype!")
self.log.debug("Collected zou asset data: {}".format(zou_asset_data))

zou_task_data = asset_data["tasks"][
os.environ["AVALON_TASK"]].get("zou")
if not zou_task_data:
self.log.warning("Zou task data not found in OpenPype!")
self.log.debug("Collected zou task data: {}".format(zou_task_data))

kitsu_project = gazu.project.get_project(zou_asset_data["project_id"])
if not kitsu_project:
raise AssertionError("Project not found in kitsu!")
context.data["kitsu_project"] = kitsu_project
self.log.debug("Collect kitsu project: {}".format(kitsu_project))

kitsu_asset = gazu.asset.get_asset(zou_asset_data["id"])
if not kitsu_asset:
raise AssertionError("Asset not found in kitsu!")
context.data["kitsu_asset"] = kitsu_asset
self.log.debug("Collect kitsu asset: {}".format(kitsu_asset))

if zou_task_data:
kitsu_task = gazu.task.get_task(zou_task_data["id"])
if not kitsu_task:
raise AssertionError("Task not found in kitsu!")
context.data["kitsu_task"] = kitsu_task
self.log.debug("Collect kitsu task: {}".format(kitsu_task))

else:
kitsu_task_type = gazu.task.get_task_type_by_name(
os.environ["AVALON_TASK"]
)
if not kitsu_task_type:
raise AssertionError(
"Task type {} not found in Kitsu!".format(
os.environ["AVALON_TASK"]
)
)

kitsu_task = gazu.task.get_task_by_name(
kitsu_asset,
kitsu_task_type
)
if not kitsu_task:
raise AssertionError("Task not found in kitsu!")
context.data["kitsu_task"] = kitsu_task
self.log.debug("Collect kitsu task: {}".format(kitsu_task))
38 changes: 38 additions & 0 deletions openpype/modules/kitsu/plugins/publish/integrate_kitsu_note.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
import gazu
import pyblish.api


class IntegrateKitsuNote(pyblish.api.ContextPlugin):
"""Integrate Kitsu Note"""

order = pyblish.api.IntegratorOrder
label = "Kitsu Note and Status"
# families = ["kitsu"]

def process(self, context):

publish_comment = context.data.get("comment")
if not publish_comment:
self.log.info("Comment is not set.")

publish_status = context.data.get("intent", {}).get("value")
if not publish_status:
self.log.info("Status is not set.")

self.log.debug("Comment is `{}`".format(publish_comment))
self.log.debug("Status is `{}`".format(publish_status))

kitsu_status = context.data.get("kitsu_status")
if not kitsu_status:
self.log.info("The status will not be changed")
kitsu_status = context.data["kitsu_task"].get("task_status")
self.log.debug("Kitsu status: {}".format(kitsu_status))

kitsu_comment = gazu.task.add_comment(
context.data["kitsu_task"],
kitsu_status,
comment = publish_comment
)

context.data["kitsu_comment"] = kitsu_comment
35 changes: 35 additions & 0 deletions openpype/modules/kitsu/plugins/publish/integrate_kitsu_review.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
import gazu
import pyblish.api


class IntegrateKitsuReview(pyblish.api.InstancePlugin):
"""Integrate Kitsu Review"""

order = pyblish.api.IntegratorOrder + 0.01
label = "Kitsu Review"
# families = ["kitsu"]
optional = True

def process(self, instance):

context = instance.context
task = context.data["kitsu_task"]
comment = context.data["kitsu_comment"]

for representation in instance.data.get("representations", []):

review_path = representation.get("published_path")

if 'review' not in representation.get("tags", []):
continue

self.log.debug("Found review at: {}".format(review_path))

gazu.task.add_preview(
task,
comment,
review_path,
normalize_movie=True
)
self.log.info("Review upload on comment")
49 changes: 0 additions & 49 deletions openpype/modules/kitsu/plugins/publish/kitsu_plugin.py

This file was deleted.

15 changes: 15 additions & 0 deletions openpype/modules/kitsu/plugins/publish/other_kitsu_log_out.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
import gazu
import pyblish.api


class KitsuLogOut(pyblish.api.ContextPlugin):
"""
Log out from Kitsu API
"""

order = pyblish.api.IntegratorOrder + 10
label = "Kitsu Log Out"

def process(self, context):
gazu.log_out()
27 changes: 27 additions & 0 deletions openpype/modules/kitsu/plugins/publish/validate_kitsu_intent.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
import pyblish.api
import gazu


class ValidateKitsuIntent(pyblish.api.ContextPlugin):
"""Validate Kitsu Status"""

order = pyblish.api.ValidatorOrder
label = "Kitsu Intent/Status"
# families = ["kitsu"]
optional = True

def process(self, context):

publish_status = context.data.get("intent", {}).get("value")
if not publish_status:
self.log.info("Status is not set.")

kitsu_status = gazu.task.get_task_status_by_short_name(publish_status)
if not kitsu_status:
raise AssertionError(
"Status `{}` not found in kitsu!".format(kitsu_status)
)
self.log.debug("Collect kitsu status: {}".format(kitsu_status))

context.data["kitsu_status"] = kitsu_status

0 comments on commit 63fe5a0

Please sign in to comment.