Convert to "native value" in the serializer

This commit is contained in:
Oliver 2021-11-09 17:43:36 +11:00
parent 4433befbdc
commit 324335a620
2 changed files with 33 additions and 21 deletions

View File

@ -909,6 +909,14 @@ class InvenTreeSetting(BaseInvenTreeSetting):
help_text=_('Settings key (must be unique - case insensitive'),
)
def to_native_value(self):
"""
Return the "pythonic" value,
e.g. convert "True" to True, and "1" to 1
"""
return self.__class__.get_setting(self.key)
class InvenTreeUserSetting(BaseInvenTreeSetting):
"""
@ -1119,6 +1127,14 @@ class InvenTreeUserSetting(BaseInvenTreeSetting):
'user__id': kwargs['user'].id
}
def to_native_value(self):
"""
Return the "pythonic" value,
e.g. convert "True" to True, and "1" to 1
"""
return self.__class__.get_setting(self.key, user=self.user)
class PriceBreak(models.Model):
"""

View File

@ -11,9 +11,10 @@ from rest_framework import serializers
from common.models import InvenTreeSetting, InvenTreeUserSetting
class GlobalSettingsSerializer(InvenTreeModelSerializer):
class SettingsSerializer(InvenTreeModelSerializer):
"""
Serializer for the InvenTreeSetting model
Base serializer for a settings object
"""
key = serializers.CharField(read_only=True)
@ -26,13 +27,25 @@ class GlobalSettingsSerializer(InvenTreeModelSerializer):
choices = serializers.SerializerMethodField()
def get_choices(self, obj: InvenTreeUserSetting):
def get_choices(self, obj):
"""
Returns the choices available for a given item
"""
return obj.choices()
value = serializers.SerializerMethodField()
def get_value(self, obj):
return obj.to_native_value()
class GlobalSettingsSerializer(SettingsSerializer):
"""
Serializer for the InvenTreeSetting model
"""
class Meta:
model = InvenTreeSetting
fields = [
@ -46,30 +59,13 @@ class GlobalSettingsSerializer(InvenTreeModelSerializer):
]
class UserSettingsSerializer(InvenTreeModelSerializer):
class UserSettingsSerializer(SettingsSerializer):
"""
Serializer for the InvenTreeUserSetting model
"""
key = serializers.CharField(read_only=True)
name = serializers.CharField(read_only=True)
description = serializers.CharField(read_only=True)
user = serializers.PrimaryKeyRelatedField(read_only=True)
type = serializers.CharField(source='setting_type', read_only=True)
choices = serializers.SerializerMethodField()
def get_choices(self, obj: InvenTreeUserSetting):
"""
Returns the choices available for a given item
"""
return obj.choices()
class Meta:
model = InvenTreeUserSetting
fields = [