♻️ optimizing enum classes

This commit is contained in:
Ondrej Samohel 2023-01-11 19:13:54 +01:00
parent ca552a7018
commit 7e4b3cb3af
No known key found for this signature in database
GPG key ID: 02376E18990A97C6
3 changed files with 56 additions and 41 deletions

View file

@ -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",

View file

@ -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"]

View file

@ -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,