mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
TemplatesDict does not return objected templates with 'templates' attribute
This commit is contained in:
parent
899e59b059
commit
43839e63f1
3 changed files with 46 additions and 27 deletions
|
|
@ -402,7 +402,9 @@ class AnatomyTemplates(TemplatesDict):
|
||||||
return self.templates.get(key, default)
|
return self.templates.get(key, default)
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
|
self._raw_templates = None
|
||||||
self._templates = None
|
self._templates = None
|
||||||
|
self._objected_templates = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def project_name(self):
|
def project_name(self):
|
||||||
|
|
@ -414,13 +416,21 @@ class AnatomyTemplates(TemplatesDict):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def templates(self):
|
def templates(self):
|
||||||
|
self._validate_discovery()
|
||||||
|
return self._templates
|
||||||
|
|
||||||
|
@property
|
||||||
|
def objected_templates(self):
|
||||||
|
self._validate_discovery()
|
||||||
|
return self._objected_templates
|
||||||
|
|
||||||
|
def _validate_discovery(self):
|
||||||
if self.project_name != self.loaded_project:
|
if self.project_name != self.loaded_project:
|
||||||
self._templates = None
|
self.reset()
|
||||||
|
|
||||||
if self._templates is None:
|
if self._templates is None:
|
||||||
self._discover()
|
self._discover()
|
||||||
self.loaded_project = self.project_name
|
self.loaded_project = self.project_name
|
||||||
return self._templates
|
|
||||||
|
|
||||||
def _format_value(self, value, data):
|
def _format_value(self, value, data):
|
||||||
if isinstance(value, RootItem):
|
if isinstance(value, RootItem):
|
||||||
|
|
@ -434,31 +444,34 @@ class AnatomyTemplates(TemplatesDict):
|
||||||
|
|
||||||
def set_templates(self, templates):
|
def set_templates(self, templates):
|
||||||
if not templates:
|
if not templates:
|
||||||
self._raw_templates = None
|
self.reset()
|
||||||
self._templates = None
|
return
|
||||||
else:
|
|
||||||
self._raw_templates = copy.deepcopy(templates)
|
|
||||||
templates = copy.deepcopy(templates)
|
|
||||||
v_queue = collections.deque()
|
|
||||||
v_queue.append(templates)
|
|
||||||
while v_queue:
|
|
||||||
item = v_queue.popleft()
|
|
||||||
if not isinstance(item, dict):
|
|
||||||
continue
|
|
||||||
|
|
||||||
for key in tuple(item.keys()):
|
self._raw_templates = copy.deepcopy(templates)
|
||||||
value = item[key]
|
templates = copy.deepcopy(templates)
|
||||||
if isinstance(value, dict):
|
v_queue = collections.deque()
|
||||||
v_queue.append(value)
|
v_queue.append(templates)
|
||||||
|
while v_queue:
|
||||||
|
item = v_queue.popleft()
|
||||||
|
if not isinstance(item, dict):
|
||||||
|
continue
|
||||||
|
|
||||||
elif (
|
for key in tuple(item.keys()):
|
||||||
isinstance(value, StringType)
|
value = item[key]
|
||||||
and "{task}" in value
|
if isinstance(value, dict):
|
||||||
):
|
v_queue.append(value)
|
||||||
item[key] = value.replace("{task}", "{task[name]}")
|
|
||||||
|
|
||||||
solved_templates = self.solve_template_inner_links(templates)
|
elif (
|
||||||
self._templates = self.create_ojected_templates(solved_templates)
|
isinstance(value, StringType)
|
||||||
|
and "{task}" in value
|
||||||
|
):
|
||||||
|
item[key] = value.replace("{task}", "{task[name]}")
|
||||||
|
|
||||||
|
solved_templates = self.solve_template_inner_links(templates)
|
||||||
|
self._templates = solved_templates
|
||||||
|
self._objected_templates = self.create_ojected_templates(
|
||||||
|
solved_templates
|
||||||
|
)
|
||||||
|
|
||||||
def default_templates(self):
|
def default_templates(self):
|
||||||
"""Return default templates data with solved inner keys."""
|
"""Return default templates data with solved inner keys."""
|
||||||
|
|
|
||||||
|
|
@ -227,15 +227,18 @@ class TemplatesDict(object):
|
||||||
def __init__(self, templates=None):
|
def __init__(self, templates=None):
|
||||||
self._raw_templates = None
|
self._raw_templates = None
|
||||||
self._templates = None
|
self._templates = None
|
||||||
|
self._objected_templates = None
|
||||||
self.set_templates(templates)
|
self.set_templates(templates)
|
||||||
|
|
||||||
def set_templates(self, templates):
|
def set_templates(self, templates):
|
||||||
if templates is None:
|
if templates is None:
|
||||||
self._raw_templates = None
|
self._raw_templates = None
|
||||||
self._templates = None
|
self._templates = None
|
||||||
|
self._objected_templates = None
|
||||||
elif isinstance(templates, dict):
|
elif isinstance(templates, dict):
|
||||||
self._raw_templates = copy.deepcopy(templates)
|
self._raw_templates = copy.deepcopy(templates)
|
||||||
self._templates = self.create_ojected_templates(templates)
|
self._templates = templates
|
||||||
|
self._objected_templates = self.create_ojected_templates(templates)
|
||||||
else:
|
else:
|
||||||
raise TypeError("<{}> argument must be a dict, not {}.".format(
|
raise TypeError("<{}> argument must be a dict, not {}.".format(
|
||||||
self.__class__.__name__, str(type(templates))
|
self.__class__.__name__, str(type(templates))
|
||||||
|
|
@ -255,6 +258,10 @@ class TemplatesDict(object):
|
||||||
def templates(self):
|
def templates(self):
|
||||||
return self._templates
|
return self._templates
|
||||||
|
|
||||||
|
@property
|
||||||
|
def objected_templates(self):
|
||||||
|
return self._objected_templates
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_ojected_templates(cls, templates):
|
def create_ojected_templates(cls, templates):
|
||||||
if not isinstance(templates, dict):
|
if not isinstance(templates, dict):
|
||||||
|
|
@ -325,7 +332,7 @@ class TemplatesDict(object):
|
||||||
if env_key not in data:
|
if env_key not in data:
|
||||||
data[env_key] = val
|
data[env_key] = val
|
||||||
|
|
||||||
solved = self._solve_dict(self.templates, data)
|
solved = self._solve_dict(self.objected_templates, data)
|
||||||
|
|
||||||
output = TemplatesResultDict(solved)
|
output = TemplatesResultDict(solved)
|
||||||
output.strict = strict
|
output.strict = strict
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,6 @@ class CreateFolders(BaseAction):
|
||||||
all_entities = self.get_notask_children(entity)
|
all_entities = self.get_notask_children(entity)
|
||||||
|
|
||||||
anatomy = Anatomy(project_name)
|
anatomy = Anatomy(project_name)
|
||||||
project_settings = get_project_settings(project_name)
|
|
||||||
|
|
||||||
work_keys = ["work", "folder"]
|
work_keys = ["work", "folder"]
|
||||||
work_template = anatomy.templates
|
work_template = anatomy.templates
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue