mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
♻️ optimizing enum classes
This commit is contained in:
parent
ca552a7018
commit
7e4b3cb3af
3 changed files with 56 additions and 41 deletions
|
|
@ -107,7 +107,8 @@ from .enum_entity import (
|
|||
TaskTypeEnumEntity,
|
||||
DeadlineUrlEnumEntity,
|
||||
AnatomyTemplatesEnumEntity,
|
||||
ShotgridUrlEnumEntity
|
||||
ShotgridUrlEnumEntity,
|
||||
RoyalRenderRootEnumEntity
|
||||
)
|
||||
|
||||
from .list_entity import ListEntity
|
||||
|
|
@ -170,6 +171,7 @@ __all__ = (
|
|||
"TaskTypeEnumEntity",
|
||||
"DeadlineUrlEnumEntity",
|
||||
"ShotgridUrlEnumEntity",
|
||||
"RoyalRenderRootEnumEntity",
|
||||
"AnatomyTemplatesEnumEntity",
|
||||
|
||||
"ListEntity",
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
import abc
|
||||
import six
|
||||
import copy
|
||||
from .input_entities import InputEntity
|
||||
from .exceptions import EntitySchemaError
|
||||
|
|
@ -476,8 +478,9 @@ class TaskTypeEnumEntity(BaseEnumEntity):
|
|||
self.set(value_on_not_set)
|
||||
|
||||
|
||||
class DeadlineUrlEnumEntity(BaseEnumEntity):
|
||||
schema_types = ["deadline_url-enum"]
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class FarmRootEnumEntity(BaseEnumEntity):
|
||||
schema_types = []
|
||||
|
||||
def _item_initialization(self):
|
||||
self.multiselection = self.schema_data.get("multiselection", True)
|
||||
|
|
@ -495,22 +498,8 @@ class DeadlineUrlEnumEntity(BaseEnumEntity):
|
|||
# GUI attribute
|
||||
self.placeholder = self.schema_data.get("placeholder")
|
||||
|
||||
def _get_enum_values(self):
|
||||
deadline_urls_entity = self.get_entity_from_path(
|
||||
"system_settings/modules/deadline/deadline_urls"
|
||||
)
|
||||
|
||||
valid_keys = set()
|
||||
enum_items_list = []
|
||||
for server_name, url_entity in deadline_urls_entity.items():
|
||||
enum_items_list.append(
|
||||
{server_name: "{}: {}".format(server_name, url_entity.value)}
|
||||
)
|
||||
valid_keys.add(server_name)
|
||||
return enum_items_list, valid_keys
|
||||
|
||||
def set_override_state(self, *args, **kwargs):
|
||||
super(DeadlineUrlEnumEntity, self).set_override_state(*args, **kwargs)
|
||||
super(FarmRootEnumEntity, self).set_override_state(*args, **kwargs)
|
||||
|
||||
self.enum_items, self.valid_keys = self._get_enum_values()
|
||||
if self.multiselection:
|
||||
|
|
@ -527,22 +516,50 @@ class DeadlineUrlEnumEntity(BaseEnumEntity):
|
|||
elif self._current_value not in self.valid_keys:
|
||||
self._current_value = tuple(self.valid_keys)[0]
|
||||
|
||||
@abc.abstractmethod
|
||||
def _get_enum_values(self):
|
||||
pass
|
||||
|
||||
class ShotgridUrlEnumEntity(BaseEnumEntity):
|
||||
|
||||
class DeadlineUrlEnumEntity(FarmRootEnumEntity):
|
||||
schema_types = ["deadline_url-enum"]
|
||||
|
||||
def _get_enum_values(self):
|
||||
deadline_urls_entity = self.get_entity_from_path(
|
||||
"system_settings/modules/deadline/deadline_urls"
|
||||
)
|
||||
|
||||
valid_keys = set()
|
||||
enum_items_list = []
|
||||
for server_name, url_entity in deadline_urls_entity.items():
|
||||
enum_items_list.append(
|
||||
{server_name: "{}: {}".format(server_name, url_entity.value)}
|
||||
)
|
||||
valid_keys.add(server_name)
|
||||
return enum_items_list, valid_keys
|
||||
|
||||
|
||||
class RoyalRenderRootEnumEntity(FarmRootEnumEntity):
|
||||
schema_types = ["rr_root-enum"]
|
||||
|
||||
def _get_enum_values(self):
|
||||
rr_root_entity = self.get_entity_from_path(
|
||||
"system_settings/modules/royalrender/rr_paths"
|
||||
)
|
||||
|
||||
valid_keys = set()
|
||||
enum_items_list = []
|
||||
for server_name, url_entity in rr_root_entity.items():
|
||||
enum_items_list.append(
|
||||
{server_name: "{}: {}".format(server_name, url_entity.value)}
|
||||
)
|
||||
valid_keys.add(server_name)
|
||||
return enum_items_list, valid_keys
|
||||
|
||||
|
||||
class ShotgridUrlEnumEntity(FarmRootEnumEntity):
|
||||
schema_types = ["shotgrid_url-enum"]
|
||||
|
||||
def _item_initialization(self):
|
||||
self.multiselection = False
|
||||
|
||||
self.enum_items = []
|
||||
self.valid_keys = set()
|
||||
|
||||
self.valid_value_types = (STRING_TYPE,)
|
||||
self.value_on_not_set = ""
|
||||
|
||||
# GUI attribute
|
||||
self.placeholder = self.schema_data.get("placeholder")
|
||||
|
||||
def _get_enum_values(self):
|
||||
shotgrid_settings = self.get_entity_from_path(
|
||||
"system_settings/modules/shotgrid/shotgrid_settings"
|
||||
|
|
@ -561,16 +578,6 @@ class ShotgridUrlEnumEntity(BaseEnumEntity):
|
|||
valid_keys.add(server_name)
|
||||
return enum_items_list, valid_keys
|
||||
|
||||
def set_override_state(self, *args, **kwargs):
|
||||
super(ShotgridUrlEnumEntity, self).set_override_state(*args, **kwargs)
|
||||
|
||||
self.enum_items, self.valid_keys = self._get_enum_values()
|
||||
if not self.valid_keys:
|
||||
self._current_value = ""
|
||||
|
||||
elif self._current_value not in self.valid_keys:
|
||||
self._current_value = tuple(self.valid_keys)[0]
|
||||
|
||||
|
||||
class AnatomyTemplatesEnumEntity(BaseEnumEntity):
|
||||
schema_types = ["anatomy-templates-enum"]
|
||||
|
|
|
|||
|
|
@ -5,6 +5,12 @@
|
|||
"collapsible": true,
|
||||
"is_file": true,
|
||||
"children": [
|
||||
{
|
||||
"type": "rr_root-enum",
|
||||
"key": "rr_paths",
|
||||
"label": "Royal Render Roots",
|
||||
"multiselect": true
|
||||
},
|
||||
{
|
||||
"type": "dict",
|
||||
"collapsible": true,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue