mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
Merge pull request #545 from ynput/enhancement/AY-5538_workfile-increment-in-one-go
Maya: Workfile Increment in one go
This commit is contained in:
commit
a0cb4a25e0
3 changed files with 78 additions and 1 deletions
|
|
@ -11,7 +11,12 @@ from pyblish.lib import MessageHandler
|
|||
|
||||
from ayon_core import AYON_CORE_ROOT
|
||||
from ayon_core.host import HostBase
|
||||
from ayon_core.lib import is_in_tests, initialize_ayon_connection, emit_event
|
||||
from ayon_core.lib import (
|
||||
is_in_tests,
|
||||
initialize_ayon_connection,
|
||||
emit_event,
|
||||
version_up
|
||||
)
|
||||
from ayon_core.addon import load_addons, AddonsManager
|
||||
from ayon_core.settings import get_project_settings
|
||||
|
||||
|
|
@ -21,6 +26,8 @@ from .template_data import get_template_data_with_names
|
|||
from .workfile import (
|
||||
get_workdir,
|
||||
get_custom_workfile_template_by_string_context,
|
||||
get_workfile_template_key_from_context,
|
||||
get_last_workfile
|
||||
)
|
||||
from . import (
|
||||
register_loader_plugin_path,
|
||||
|
|
@ -579,3 +586,48 @@ def get_process_id():
|
|||
if _process_id is None:
|
||||
_process_id = str(uuid.uuid4())
|
||||
return _process_id
|
||||
|
||||
|
||||
def version_up_current_workfile():
|
||||
"""Function to increment and save workfile
|
||||
"""
|
||||
host = registered_host()
|
||||
if not host.has_unsaved_changes():
|
||||
print("No unsaved changes, skipping file save..")
|
||||
return
|
||||
|
||||
project_name = get_current_project_name()
|
||||
folder_path = get_current_folder_path()
|
||||
task_name = get_current_task_name()
|
||||
host_name = get_current_host_name()
|
||||
|
||||
template_key = get_workfile_template_key_from_context(
|
||||
project_name,
|
||||
folder_path,
|
||||
task_name,
|
||||
host_name,
|
||||
)
|
||||
anatomy = Anatomy(project_name)
|
||||
|
||||
data = get_template_data_with_names(
|
||||
project_name, folder_path, task_name, host_name
|
||||
)
|
||||
data["root"] = anatomy.roots
|
||||
|
||||
work_template = anatomy.get_template_item("work", template_key)
|
||||
|
||||
# Define saving file extension
|
||||
extensions = host.get_workfile_extensions()
|
||||
current_file = host.get_current_workfile()
|
||||
if current_file:
|
||||
extensions = [os.path.splitext(current_file)[-1]]
|
||||
|
||||
work_root = work_template["directory"].format_strict(data)
|
||||
file_template = work_template["file"].template
|
||||
last_workfile_path = get_last_workfile(
|
||||
work_root, file_template, data, extensions, True
|
||||
)
|
||||
new_workfile_path = version_up(last_workfile_path)
|
||||
if os.path.exists(new_workfile_path):
|
||||
new_workfile_path = version_up(new_workfile_path)
|
||||
host.save_workfile(new_workfile_path)
|
||||
|
|
|
|||
|
|
@ -118,6 +118,15 @@ class WorkfilesLockProfile(BaseSettingsModel):
|
|||
enabled: bool = SettingsField(True, title="Enabled")
|
||||
|
||||
|
||||
class AYONMenuModel(BaseSettingsModel):
|
||||
_layout = "expanded"
|
||||
version_up_current_workfile: bool = SettingsField(
|
||||
False,
|
||||
title="Version Up Workfile",
|
||||
description="Add 'Version Up Workfile' to AYON menu"
|
||||
)
|
||||
|
||||
|
||||
class WorkfilesToolModel(BaseSettingsModel):
|
||||
workfile_template_profiles: list[WorkfileTemplateProfile] = SettingsField(
|
||||
default_factory=list,
|
||||
|
|
@ -268,6 +277,10 @@ class PublishToolModel(BaseSettingsModel):
|
|||
|
||||
|
||||
class GlobalToolsModel(BaseSettingsModel):
|
||||
ayon_menu: AYONMenuModel = SettingsField(
|
||||
default_factory=AYONMenuModel,
|
||||
title="AYON Menu"
|
||||
)
|
||||
creator: CreatorToolModel = SettingsField(
|
||||
default_factory=CreatorToolModel,
|
||||
title="Creator"
|
||||
|
|
@ -287,6 +300,9 @@ class GlobalToolsModel(BaseSettingsModel):
|
|||
|
||||
|
||||
DEFAULT_TOOLS_VALUES = {
|
||||
"ayon_menu": {
|
||||
"version_up_current_workfile": False
|
||||
},
|
||||
"creator": {
|
||||
"product_types_smart_select": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ from .workfile_template_builder import (
|
|||
build_workfile_template,
|
||||
update_workfile_template
|
||||
)
|
||||
from ayon_core.pipeline.context_tools import version_up_current_workfile
|
||||
from ayon_core.tools.workfile_template_build import open_template_ui
|
||||
from .workfile_template_builder import MayaTemplateBuilder
|
||||
|
||||
|
|
@ -74,6 +75,14 @@ def install(project_settings):
|
|||
|
||||
cmds.setParent("..", menu=True)
|
||||
|
||||
if project_settings["core"]["tools"]["ayon_menu"].get(
|
||||
"version_up_current_workfile"):
|
||||
cmds.menuItem(divider=True)
|
||||
cmds.menuItem(
|
||||
"Version Up Workfile",
|
||||
command=lambda *args: version_up_current_workfile()
|
||||
)
|
||||
|
||||
cmds.menuItem(divider=True)
|
||||
|
||||
cmds.menuItem(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue