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:
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user