2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-08-09 21:30:54 +00:00

Cleanup (and note to self)

This commit is contained in:
Oliver Walters
2024-11-21 13:25:25 +00:00
parent d1e045017a
commit 2fcc0bbbc0
3 changed files with 60 additions and 16 deletions

View File

@@ -83,9 +83,11 @@ class AllStatusViews(StatusView):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
"""Perform a GET request to learn information about status codes.""" """Perform a GET request to learn information about status codes."""
data = get_status_api_response() data = get_status_api_response(StatusCode)
# Extend with MachineStatus classes # Extend with MachineStatus classes
data.update(get_status_api_response(MachineStatus, prefix=['MachineStatus'])) data.update(get_status_api_response(MachineStatus, prefix=['MachineStatus']))
return Response(data) return Response(data)

View File

@@ -17,13 +17,35 @@ def get_status_api_response(base_class=StatusCode, prefix=None):
base_class: The base class to search for subclasses. base_class: The base class to search for subclasses.
prefix: A list of strings to prefix the class names with. prefix: A list of strings to prefix the class names with.
""" """
return { # TODO: Come back and fix this...
'__'.join([*(prefix or []), k.__name__]): { # return {
'class': k.__name__, # '__'.join([*(prefix or []), k.__name__]): {
'values': k.dict(), # 'class': k.__name__,
} # 'values': k.dict(),
for k in get_custom_classes(base_class=base_class, subclass=False) # }
} # for k in get_custom_classes(base_class=base_class, subclass=False)
# }
classes = inheritors(base_class, subclasses=True)
data = {}
for cls in classes:
name = cls.__name__
data[name] = {'class': name, 'values': cls.dict()}
# Extend with custom values
for item in cls.custom_values():
label = str(item.name)
if label not in data[name]['values']:
data[name]['values'][label] = {
'color': item.color,
'key': item.key,
'label': item.label,
'name': item.name,
}
return data
def state_color_mappings(): def state_color_mappings():
@@ -55,20 +77,38 @@ def get_custom_classes(
states = {} states = {}
print('get_custom_classes:', len(discovered_classes))
for cls in discovered_classes: for cls in discovered_classes:
name = cls.__name__ name = cls.__name__
states[name] = cls # states[name] =
data = [(str(m.name), (m.value, m.label, m.color)) for m in cls] # print("-", cls)
labels = [str(item[0]) for item in data] if name in states:
continue
# states[name] = cls
data = [
(str(m.name), (m.value, m.label, m.color))
for m in cls
if cls._is_element(m.name)
]
# values = cls.values()
labels = [item[0] for item in data]
for item in cls.custom_values(): for item in cls.custom_values():
label = str(item.name) label = str(item.name)
if label not in labels and label not in cls.labels(): if label not in labels:
data += [(str(item.name), (item.key, item.label, item.color))] setattr(cls, label, (item.key, item.label, item.color))
# data += [(label, (item.key, item.label, item.color))]
# values += [(str(item.name), (item.key, item.label, item.color))]
# Re-assemble the enum # Re-assemble the enum
states[name] = base_class(name, data) # states[name] = base_class(name, values)
# states[name] = base_class(name, data)
states[name] = cls
return states.values() return states.values()

View File

@@ -108,8 +108,10 @@ class StatusCode(BaseEnum):
from common.models import InvenTreeCustomUserStateModel from common.models import InvenTreeCustomUserStateModel
try: try:
return InvenTreeCustomUserStateModel.objects.filter( return list(
reference_status=cls.__name__ InvenTreeCustomUserStateModel.objects.filter(
reference_status=cls.__name__
)
) )
except Exception: except Exception:
return [] return []