2
0
mirror of https://github.com/inventree/InvenTree.git synced 2026-04-04 02:21:18 +00:00

Better ordering for plugin settings (#11646)

* Better ordering for plugin settings

- Followup to https://github.com/inventree/InvenTree/pull/11643
- Use order as provided by plugin

* Bug fix
This commit is contained in:
Oliver
2026-04-01 16:18:55 +11:00
committed by GitHub
parent 6243aec9b7
commit 080edc870f
3 changed files with 15 additions and 20 deletions

View File

@@ -10,6 +10,7 @@ import json
import math
import os
import uuid
from collections import OrderedDict
from datetime import timedelta, timezone
from email.utils import make_msgid
from enum import Enum
@@ -363,9 +364,15 @@ class BaseInvenTreeSetting(models.Model):
# Specify any "default" values which are not in the database
settings_definition = settings_definition or cls.SETTINGS
all_settings = OrderedDict()
for key, setting in settings_definition.items():
if key.upper() not in settings:
settings[key.upper()] = cls(
# If the setting is already in the database, use that value
if key.upper() in settings:
all_settings[key] = settings[key.upper()]
else:
all_settings[key.upper()] = cls(
key=key.upper(),
value=cls.get_setting_default(key, **filters),
**filters,
@@ -373,10 +380,10 @@ class BaseInvenTreeSetting(models.Model):
# remove any hidden settings
if exclude_hidden and setting.get('hidden', False):
del settings[key.upper()]
del all_settings[key.upper()]
# format settings values and remove protected
for key, setting in settings.items():
for key, setting in all_settings.items():
validator = cls.get_setting_validator(key, **filters)
if cls.is_protected(key, **filters) and setting.value != '':
@@ -389,7 +396,7 @@ class BaseInvenTreeSetting(models.Model):
except ValueError:
setting.value = cls.get_setting_default(key, **filters)
return settings
return all_settings
@classmethod
def allValues(

View File

@@ -97,12 +97,8 @@ class MachineSettingList(APIView):
)
all_settings.extend(list(settings_dict.values()))
# Sort settings by the 'key' field before returning,
# to ensure a deterministic order in the API response
all_settings = sorted(all_settings, key=lambda x: x.key)
results = MachineSerializers.MachineSettingSerializer(
all_settings, many=True
list(all_settings), many=True
).data
return Response(results)

View File

@@ -380,12 +380,8 @@ class PluginAllSettingList(APIView):
settings_definition=settings, plugin=plugin.plugin_config()
)
# Sort settings by the 'key' field before returning,
# to ensure a deterministic order in the API response
settings_values = sorted(settings_dict.values(), key=lambda x: x.key)
results = PluginSerializers.PluginSettingSerializer(
settings_values, many=True
list(settings_dict.values()), many=True
).data
return Response(results)
@@ -448,12 +444,8 @@ class PluginUserSettingList(APIView):
user=request.user,
)
# Sort settings by the 'key' field before returning,
# to ensure a deterministic order in the API response
settings_values = sorted(settings_dict.values(), key=lambda x: x.key)
results = PluginSerializers.PluginUserSettingSerializer(
settings_values, many=True
list(settings_dict.values()), many=True
).data
return Response(results)