-
Notifications
You must be signed in to change notification settings - Fork 129
Conversation
@Tilix4 great to see you are looking into tackling this! 💪 I didn't see any related issue regarding this so I just wanted to point out this ancient! set of tool prototypes I did for |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome to see work being done on Kitsu front. Just an important note for start, that we are trying to get rid of the default_modules
folder. Could you please move the module one level up?
Actually @iLLiCiTiT just told me that for now this is easier for you, so just keep in mind that it will eventually move please.
Yes I started there because @iLLiCiTiT told me so. I'd be glad to have help to move it one level up :) |
When you move it, you have to add |
@iLLiCiTiT @mkolar I moved the module up. I think the module is ready to be tested for basic usage, some things are not working ( I also commited the I'll now write some documentation but I cannot find any guideline about how to write documentation for OP, did I miss something? |
There aren't docs about the docs :D. But it is simple enough. We use docusaurus and all it's content is inside https://github.com/pypeclub/OpenPype/tree/develop/website To add new documents you just add .md pages to /docs folder and add the new entry into sidebars.js. Docusaurus itself has very good documentation https://docusaurus.io/docs (surprise, surprise :D ) if you want to see more details. Other than that, this page shows some example formatings https://github.com/pypeclub/OpenPype/blob/develop/website/docs/admin_docsexamples.md And if you want to run it locally to test, you'll need to run |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some files could not be reviewed due to errors:
./openpype/modules/kitsu/utils/credentials.py:11:49: B008: Do not perform fun...
./openpype/modules/kitsu/utils/credentials.py:11:49: B008: Do not perform function calls in argument defaults. The call is performed only once at function definition time. All calls to your function will reuse the result of that definition-time function call. If this is intended, assign the function call to a module-level variable and use that variable as a default value.
The data put in asset_data["tasks"][TASK_NAME]["zou"] are removed if you make changes to the task in the project manager interface. Do we have to change the place to put the zoo data of the task or modify the behavior of the project manage? |
That's a great question, maybe @iLLiCiTiT has an answer? |
@Tilix4 @ClementHector yeah to get around that we'd have to tweak some project manager logic. This two way mapping is actually the reason why we don't currently recommend using ftrack and our project manager at the same time. PM was really added just for micro productions that don't have any third party tool. |
…_plugins Module kitsu implement pyblish plugins
openpype/modules/kitsu/plugins/publish/validate_kitsu_intent.py
Outdated
Show resolved
Hide resolved
if not publish_status: | ||
self.log.info("Status is not set.") | ||
|
||
kitsu_status = gazu.task.get_task_status_by_short_name(publish_status) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Intent is meant as "Intent of publishing" not status of task.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't get your remark, if you may explain further, please?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, intent is artist's reason of publishing (e.g. "test" or "wip") but it's used here to check existence of status. Status is just a different thing then intent.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You mean, when intent is not None
, we must avoid updating the status in Kitsu, and when it's None
, change the status to Waiting for Approval
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In our case, this intent code seems out of topic, must be deleted, and status change must be moved to IntegrateKitsuNote
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've made the relevant changes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In our case, this intent code seems out of topic, must be deleted, and status change must be moved to IntegrateKitsuNote.
That's correct. Intent
is technically a unified comment thing that is requested by certain vendors and studios. For instance when artist publishes first version of a comp it might have status for review
but intent
might just be tech validation
.... later on v03 would still go to for review
with intent wip
, and at the end v06 might be for review
and intent for final
... or similar. intents are of course arbitrary in each studio, but most importantly they are static data on a version and don't change with status updates
openpype/modules/kitsu/plugins/publish/integrate_kitsu_review.py
Outdated
Show resolved
Hide resolved
|
||
def process(self, context): | ||
# Check if work version for user | ||
is_work_version = bool(context.data.get("intent", {}).get("value")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So when intent is not available then note is not integrated -> and review is not integrated?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hum, actually this is the opposite. If the intent has no value, it's supposed to be a normal publish. If an intent is set (WIP, test), then the Production tracker is not updated but OP is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think that intent should affect if note or review is integrated at all. Intent can be "For review"
, "Final"
or anything else, dynamically created by studio.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You mean, it shouldn't affect note or review by default, it's up to the studio to decide to override or not this behavior?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the intent has no value, it's supposed to be a normal publish. If an intent is set (WIP, test), then the Production tracker is not updated but OP is.
If really needed then this sounds more like a Admin Settings tweak like a "filter" for when to integrate to Kitsu. For example:
- Settings for "Exclude Intents for Integration to Kitsu" could be set to
{"WIP", "test"}
- The integrator would just check against that
if intent in exclude_intents: return
.
Should not be used as definition of publish flow, at least not by default.
👍 - Is it correct there's nothing native to OpenPype that would allow this in production currently?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should not be used as definition of publish flow, at least not by default.
Okay, will do it this way.
If really needed then this sounds more like a Admin Settings tweak like a "filter" for when to integrate to Kitsu.
I don't need it currently, with @ClementHector we thought we should do it this way. Then we'll wait for feedback.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Publish comments can be integrated into kitsu/ftrach... with the review, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Settings for "Exclude Intents for Integration to Kitsu" could be set to
I would say that this integrator plugin should not look for intent at all, but should have mechanism to skip if "some value" is set (or not set).
Like, what if I don't care about intent at all and just want integrate everything, all the time. With this logic I also have to care about intent even if it should not matter. But I can have a plugin which will "based on intent value" store value into instance/context which tell this plugin to skip integration, or based on comment, or based on separated settings from my addon.
Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>
Co-authored-by: Félix David <felixg.david@gmail.com>
…roval waiting approval status can be set in project settings
@mkolar Hello, Is there something to do to accept this request? |
I'd say this is ready to go! |
Kitsu meet OpenPype, OpenPype meet Kitsu. Play nice together and don't make much mess...... |
@all-contributors please add @Tilix4 for code and documentation |
I've put up a pull request to add @Tilix4! 🎉 |
Brief description
Kitsu module.
Description
Use Kitsu as project management module.
Documentation (add "type: documentation" label)
Doc has been written, you can read it in PR files.
Testing notes:
Server
url in Project Settings.Kitsu Credentials
window will pop. Either way click onKitsu Connect
button and sign-in..poetry/bin/poetry run python start.py module kitsu sync-service -l me@domain.ext -p mypass
to start sync OP with Kitsu, events listening will start right after sync is achieved.You can also try
.poetry/bin/poetry run python start.py module kitsu push-to-zou -l me@domain.ext -p mypass
, but it cannot handle all use cases and must be considered as a helpful facultative utility.Listening currently supports most of project/episode/sequence/shot/asset/task create/update/delete events, but not
project:delete
,episode:delete
,sequence:delete
because of a bug, which will be resolved by cgwire/zou#427