mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
remove unneccessary settings
This commit is contained in:
parent
0c2ea6ee72
commit
3597efbe9f
5 changed files with 16 additions and 447 deletions
|
|
@ -42,36 +42,30 @@ class ValidateInstanceInContext(pyblish.api.InstancePlugin,
|
|||
context_asset = instance.context.data["folderPath"]
|
||||
task = rt.getUserProp(instance_node, "task")
|
||||
context_task = instance.context.data["task"]
|
||||
invalid = []
|
||||
if asset != context_asset:
|
||||
raise PublishValidationError(
|
||||
message=(
|
||||
"Instance '{}' publishes to different asset than current "
|
||||
"context: {}. Current context: {}".format(
|
||||
instance.name, asset, context_asset
|
||||
)
|
||||
),
|
||||
description=(
|
||||
"## Publishing to a different asset\n"
|
||||
"There are publish instances present which are publishing "
|
||||
"into a different asset than your current context.\n\n"
|
||||
"Usually this is not what you want but there can be cases "
|
||||
"where you might want to publish into another asset or "
|
||||
"shot. If that's the case you can disable the validation "
|
||||
"on the instance to ignore it."
|
||||
invalid.append(
|
||||
"Instance '{}' publishes to different asset than current "
|
||||
"context: {}. Current context: {}".format(
|
||||
instance.name, asset, context_asset
|
||||
)
|
||||
)
|
||||
if task != context_task:
|
||||
invalid.append(
|
||||
"Instance '{}' publishes to different task than current "
|
||||
"context: {}. Current context: {}".format(
|
||||
instance.name, task, context_task
|
||||
)
|
||||
)
|
||||
|
||||
if invalid:
|
||||
message = "\n".join(invalid)
|
||||
raise PublishValidationError(
|
||||
message=(
|
||||
"Instance '{}' publishes to different task than current "
|
||||
"context: {}. Current context: {}".format(
|
||||
instance.name, task, context_task
|
||||
)
|
||||
),
|
||||
message=message,
|
||||
description=(
|
||||
"## Publishing to a different asset\n"
|
||||
"There are publish instances present which are publishing "
|
||||
"into a different asset than your current context.\n\n"
|
||||
"into a different asset or task than your current context.\n\n"
|
||||
"Usually this is not what you want but there can be cases "
|
||||
"where you might want to publish into another asset or "
|
||||
"shot. If that's the case you can disable the validation "
|
||||
|
|
|
|||
|
|
@ -1,18 +0,0 @@
|
|||
from .lib import (
|
||||
get_ayon_settings,
|
||||
get_studio_settings,
|
||||
get_system_settings,
|
||||
get_project_settings,
|
||||
get_general_environments,
|
||||
get_current_project_settings,
|
||||
)
|
||||
|
||||
|
||||
__all__ = (
|
||||
"get_ayon_settings",
|
||||
"get_studio_settings",
|
||||
"get_system_settings",
|
||||
"get_general_environments",
|
||||
"get_project_settings",
|
||||
"get_current_project_settings",
|
||||
)
|
||||
|
|
@ -1,105 +0,0 @@
|
|||
{
|
||||
"unit_scale_settings": {
|
||||
"enabled": true,
|
||||
"scene_unit_scale": "Meters"
|
||||
},
|
||||
"imageio": {
|
||||
"activate_host_color_management": true,
|
||||
"ocio_config": {
|
||||
"override_global_config": false,
|
||||
"filepath": []
|
||||
},
|
||||
"file_rules": {
|
||||
"activate_host_rules": false,
|
||||
"rules": {}
|
||||
}
|
||||
},
|
||||
"RenderSettings": {
|
||||
"default_render_image_folder": "renders/3dsmax",
|
||||
"aov_separator": "underscore",
|
||||
"image_format": "exr",
|
||||
"multipass": true
|
||||
},
|
||||
"CreateReview": {
|
||||
"review_width": 1920,
|
||||
"review_height": 1080,
|
||||
"percentSize": 100.0,
|
||||
"keep_images": false,
|
||||
"image_format": "png",
|
||||
"visual_style": "Realistic",
|
||||
"viewport_preset": "Quality",
|
||||
"anti_aliasing": "None",
|
||||
"vp_texture": true
|
||||
},
|
||||
"PointCloud": {
|
||||
"attribute": {
|
||||
"Age": "age",
|
||||
"Radius": "radius",
|
||||
"Position": "position",
|
||||
"Rotation": "rotation",
|
||||
"Scale": "scale",
|
||||
"Velocity": "velocity",
|
||||
"Color": "color",
|
||||
"TextureCoordinate": "texcoord",
|
||||
"MaterialID": "matid",
|
||||
"custFloats": "custFloats",
|
||||
"custVecs": "custVecs"
|
||||
}
|
||||
},
|
||||
"publish": {
|
||||
"ValidateInstanceInContext": {
|
||||
"enabled": true,
|
||||
"optional": true,
|
||||
"active": true
|
||||
},
|
||||
"ValidateFrameRange": {
|
||||
"enabled": true,
|
||||
"optional": true,
|
||||
"active": true
|
||||
},
|
||||
"ValidateAttributes": {
|
||||
"enabled": false,
|
||||
"attributes": {}
|
||||
},
|
||||
"ValidateCameraAttributes": {
|
||||
"enabled": true,
|
||||
"optional": true,
|
||||
"active": false,
|
||||
"fov": 45.0,
|
||||
"nearrange": 0.0,
|
||||
"farrange": 1000.0,
|
||||
"nearclip": 1.0,
|
||||
"farclip": 1000.0
|
||||
},
|
||||
"ValidateLoadedPlugin": {
|
||||
"enabled": false,
|
||||
"optional": true,
|
||||
"family_plugins_mapping": []
|
||||
},
|
||||
"ExtractModelObj": {
|
||||
"enabled": true,
|
||||
"optional": true,
|
||||
"active": false
|
||||
},
|
||||
"ExtractModelFbx": {
|
||||
"enabled": true,
|
||||
"optional": true,
|
||||
"active": false
|
||||
},
|
||||
"ExtractModelUSD": {
|
||||
"enabled": true,
|
||||
"optional": true,
|
||||
"active": false
|
||||
},
|
||||
"ExtractModel": {
|
||||
"enabled": true,
|
||||
"optional": true,
|
||||
"active": true
|
||||
},
|
||||
"ExtractMaxSceneRaw": {
|
||||
"enabled": true,
|
||||
"optional": true,
|
||||
"active": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,223 +0,0 @@
|
|||
import os
|
||||
import json
|
||||
import logging
|
||||
import collections
|
||||
import copy
|
||||
import time
|
||||
|
||||
from ayon_core.client import get_ayon_server_api_connection
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CacheItem:
|
||||
lifetime = 10
|
||||
|
||||
def __init__(self, value, outdate_time=None):
|
||||
self._value = value
|
||||
if outdate_time is None:
|
||||
outdate_time = time.time() + self.lifetime
|
||||
self._outdate_time = outdate_time
|
||||
|
||||
@classmethod
|
||||
def create_outdated(cls):
|
||||
return cls({}, 0)
|
||||
|
||||
def get_value(self):
|
||||
return copy.deepcopy(self._value)
|
||||
|
||||
def update_value(self, value):
|
||||
self._value = value
|
||||
self._outdate_time = time.time() + self.lifetime
|
||||
|
||||
@property
|
||||
def is_outdated(self):
|
||||
return time.time() > self._outdate_time
|
||||
|
||||
|
||||
class _AyonSettingsCache:
|
||||
use_bundles = None
|
||||
variant = None
|
||||
addon_versions = CacheItem.create_outdated()
|
||||
studio_settings = CacheItem.create_outdated()
|
||||
cache_by_project_name = collections.defaultdict(
|
||||
CacheItem.create_outdated)
|
||||
|
||||
@classmethod
|
||||
def _use_bundles(cls):
|
||||
if _AyonSettingsCache.use_bundles is None:
|
||||
con = get_ayon_server_api_connection()
|
||||
major, minor, _, _, _ = con.get_server_version_tuple()
|
||||
use_bundles = True
|
||||
if (major, minor) < (0, 3):
|
||||
use_bundles = False
|
||||
_AyonSettingsCache.use_bundles = use_bundles
|
||||
return _AyonSettingsCache.use_bundles
|
||||
|
||||
@classmethod
|
||||
def _get_variant(cls):
|
||||
if _AyonSettingsCache.variant is None:
|
||||
from ayon_core.lib import is_staging_enabled, is_dev_mode_enabled
|
||||
|
||||
variant = "production"
|
||||
if is_dev_mode_enabled():
|
||||
variant = cls._get_bundle_name()
|
||||
elif is_staging_enabled():
|
||||
variant = "staging"
|
||||
|
||||
# Cache variant
|
||||
_AyonSettingsCache.variant = variant
|
||||
|
||||
# Set the variant to global ayon api connection
|
||||
con = get_ayon_server_api_connection()
|
||||
con.set_default_settings_variant(variant)
|
||||
return _AyonSettingsCache.variant
|
||||
|
||||
@classmethod
|
||||
def _get_bundle_name(cls):
|
||||
return os.environ["AYON_BUNDLE_NAME"]
|
||||
|
||||
@classmethod
|
||||
def get_value_by_project(cls, project_name):
|
||||
cache_item = _AyonSettingsCache.cache_by_project_name[project_name]
|
||||
if cache_item.is_outdated:
|
||||
con = get_ayon_server_api_connection()
|
||||
if cls._use_bundles():
|
||||
value = con.get_addons_settings(
|
||||
bundle_name=cls._get_bundle_name(),
|
||||
project_name=project_name,
|
||||
variant=cls._get_variant()
|
||||
)
|
||||
else:
|
||||
value = con.get_addons_settings(project_name)
|
||||
cache_item.update_value(value)
|
||||
return cache_item.get_value()
|
||||
|
||||
@classmethod
|
||||
def _get_addon_versions_from_bundle(cls):
|
||||
con = get_ayon_server_api_connection()
|
||||
expected_bundle = cls._get_bundle_name()
|
||||
bundles = con.get_bundles()["bundles"]
|
||||
bundle = next(
|
||||
(
|
||||
bundle
|
||||
for bundle in bundles
|
||||
if bundle["name"] == expected_bundle
|
||||
),
|
||||
None
|
||||
)
|
||||
if bundle is not None:
|
||||
return bundle["addons"]
|
||||
return {}
|
||||
|
||||
@classmethod
|
||||
def get_addon_versions(cls):
|
||||
cache_item = _AyonSettingsCache.addon_versions
|
||||
if cache_item.is_outdated:
|
||||
if cls._use_bundles():
|
||||
addons = cls._get_addon_versions_from_bundle()
|
||||
else:
|
||||
con = get_ayon_server_api_connection()
|
||||
settings_data = con.get_addons_settings(
|
||||
only_values=False,
|
||||
variant=cls._get_variant()
|
||||
)
|
||||
addons = settings_data["versions"]
|
||||
cache_item.update_value(addons)
|
||||
|
||||
return cache_item.get_value()
|
||||
|
||||
|
||||
def get_site_local_overrides(project_name, site_name, local_settings=None):
|
||||
"""Site overrides from local settings for passet project and site name.
|
||||
|
||||
Deprecated:
|
||||
This function is not implemented for AYON and will be removed.
|
||||
|
||||
Args:
|
||||
project_name (str): For which project are overrides.
|
||||
site_name (str): For which site are overrides needed.
|
||||
local_settings (dict): Preloaded local settings. They are loaded
|
||||
automatically if not passed.
|
||||
"""
|
||||
|
||||
return {}
|
||||
|
||||
|
||||
def get_ayon_settings(project_name=None):
|
||||
"""AYON studio settings.
|
||||
|
||||
Raw AYON settings values.
|
||||
|
||||
Args:
|
||||
project_name (Optional[str]): Project name.
|
||||
|
||||
Returns:
|
||||
dict[str, Any]: AYON settings.
|
||||
"""
|
||||
|
||||
return _AyonSettingsCache.get_value_by_project(project_name)
|
||||
|
||||
|
||||
def get_studio_settings(*args, **kwargs):
|
||||
return _AyonSettingsCache.get_value_by_project(None)
|
||||
|
||||
|
||||
# Backward compatibility
|
||||
get_system_settings = get_studio_settings
|
||||
|
||||
|
||||
def get_project_settings(project_name, *args, **kwargs):
|
||||
return _AyonSettingsCache.get_value_by_project(project_name)
|
||||
|
||||
|
||||
def get_general_environments(studio_settings=None):
|
||||
"""General studio environment variables.
|
||||
|
||||
Args:
|
||||
studio_settings (Optional[dict]): Pre-queried studio settings.
|
||||
|
||||
Returns:
|
||||
dict[str, Any]: General studio environment variables.
|
||||
|
||||
"""
|
||||
if studio_settings is None:
|
||||
studio_settings = get_ayon_settings()
|
||||
return json.loads(studio_settings["core"]["environments"])
|
||||
|
||||
|
||||
def get_project_environments(project_name, project_settings=None):
|
||||
"""Project environment variables.
|
||||
|
||||
Args:
|
||||
project_name (str): Project name.
|
||||
project_settings (Optional[dict]): Pre-queried project settings.
|
||||
|
||||
Returns:
|
||||
dict[str, Any]: Project environment variables.
|
||||
|
||||
"""
|
||||
if project_settings is None:
|
||||
project_settings = get_project_settings(project_name)
|
||||
return json.loads(
|
||||
project_settings["core"]["project_environments"]
|
||||
)
|
||||
|
||||
|
||||
def get_current_project_settings():
|
||||
"""Project settings for current context project.
|
||||
|
||||
Project name should be stored in environment variable `AYON_PROJECT_NAME`.
|
||||
This function should be used only in host context where environment
|
||||
variable must be set and should not happen that any part of process will
|
||||
change the value of the enviornment variable.
|
||||
"""
|
||||
project_name = os.environ.get("AYON_PROJECT_NAME")
|
||||
if not project_name:
|
||||
raise ValueError(
|
||||
"Missing context project in environemt variable `AYON_PROJECT_NAME`."
|
||||
)
|
||||
return get_project_settings(project_name)
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
# Structure of local settings
|
||||
- local settings do not have any validation schemas right now this should help to see what is stored to local settings and how it works
|
||||
- they are stored by identifier site_id which should be unified identifier of workstation
|
||||
- all keys may and may not available on load
|
||||
- contain main categories: `general`, `applications`, `projects`
|
||||
|
||||
## Categories
|
||||
### General
|
||||
- ATM contain only label of site
|
||||
```json
|
||||
{
|
||||
"general": {
|
||||
"site_label": "MySite"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Applications
|
||||
- modifications of application executables
|
||||
- output should match application groups and variants
|
||||
```json
|
||||
{
|
||||
"applications": {
|
||||
"<app group>": {
|
||||
"<app name>": {
|
||||
"executable": "/my/path/to/nuke_12_2"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Projects
|
||||
- project specific modifications
|
||||
- default project is stored under constant key defined in `pype.settings.contants`
|
||||
```json
|
||||
{
|
||||
"projects": {
|
||||
"<project name>": {
|
||||
"active_site": "<name of active site>",
|
||||
"remote_site": "<name of remote site>",
|
||||
"roots": {
|
||||
"<site name>": {
|
||||
"<root name>": "<root dir path>"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Final document
|
||||
```json
|
||||
{
|
||||
"_id": "<ObjectId(...)>",
|
||||
"site_id": "<site id>",
|
||||
"general": {
|
||||
"site_label": "MySite"
|
||||
},
|
||||
"applications": {
|
||||
"<app group>": {
|
||||
"<app name>": {
|
||||
"executable": "<path to app executable>"
|
||||
}
|
||||
}
|
||||
},
|
||||
"projects": {
|
||||
"<project name>": {
|
||||
"active_site": "<name of active site>",
|
||||
"remote_site": "<name of remote site>",
|
||||
"roots": {
|
||||
"<site name>": {
|
||||
"<root name>": "<root dir path>"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue